发新话题
打印

在桌面上画图的问题

在桌面上画图的问题

在部分了解了API,GDI之后,我做了一个练习,目的是想在桌面上画图(我用的是C#),在我成功画出点和线之后,我却始终画不上图片。我现在的问题是,如果我用bitblt这个API,返回值不为0,但是桌面上看不到图片,我认为可能出错的原因是设备场景不同,一个是桌面的设备场景(GetDC(0)),一个是位图的设备场景(GetDC(Bitmap))。但是始终想不出解决方法。。。
求解,谢谢!

TOP

哦,我程序上写的是null

我随便写了个0,不好意思
不过,桌面这个必须GetDC(null),查找窗口没用的

TOP

恩,不过目前使用GetDC(null)还是可以获得桌面设备场景的,但是如何在上面画图像……郁闷啊

TOP

难道和系统有关?

那个函数在我程序里没有作用……难道和系统有关么?

TOP

这是我的代码,已经通过,语言C#,系统Win2K

IntPtr hdc=(IntPtr)Gdi32.GetDC(null);    //获得桌面设备场景

Graphics g1=Graphics.FromHdc(hdc);

Bitmap MyImage = new Bitmap ( Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , g1 ) ;  //根据屏幕大小创建一个与之相同大小的Bitmap对象

Graphics g2 = Graphics.FromImage ( MyImage ) ;

IntPtr dc2 = g2.GetHdc();

BitBlt ( (void*)dc2 , 0 , 0 , Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , (void*)hdc , 0 , 0 , 13369376 ) ;

g2.ReleaseHdc ( dc2 ) ;

MyImage.Save(@"e:src.bmp",ImageFormat.Bmp);

TOP

可惜这个不是我要的……

这个只是测试……我想要的是如何把文件里的图贴到桌面场景上去……因为无法修改设备场景,实在不知道怎么做了。。。

TOP

发新话题