标题:
在桌面上画图的问题
[打印本页]
作者:
dahuatttt
时间:
2006-1-18 21:41
标题:
在桌面上画图的问题
在部分了解了API,GDI之后,我做了一个练习,目的是想在桌面上画图(我用的是C#),在我成功画出点和线之后,我却始终画不上图片。我现在的问题是,如果我用bitblt这个API,返回值不为0,但是桌面上看不到图片,我认为可能出错的原因是设备场景不同,一个是桌面的设备场景(GetDC(0)),一个是位图的设备场景(GetDC(Bitmap))。但是始终想不出解决方法。。。
求解,谢谢!
作者:
Nothing
时间:
2006-1-18 22:26
桌面的DC不应当是0吧,你需要查找窗口,才能找到桌面的DC
作者:
dahuatttt
时间:
2006-1-18 22:40
标题:
哦,我程序上写的是null
我随便写了个0,不好意思
不过,桌面这个必须GetDC(null),查找窗口没用的
作者:
Nothing
时间:
2006-1-18 23:28
对了,如果桌面用了显示WEB内容,就是不GETDC可以控制的了,因为此时的DC已经不是正常的DC,而是使用的是IE的东西。
作者:
dahuatttt
时间:
2006-1-18 23:47
恩,不过目前使用GetDC(null)还是可以获得桌面设备场景的,但是如何在上面画图像……郁闷啊
作者:
Nothing
时间:
2006-1-19 19:36
刚才我用程序试了一个,桌面的HWND不是空的,也是一个窗口。所以不可能用GetDC(null)来得到,使用桌面应当使用API函数GetDesktopWindow()来实现
作者:
dahuatttt
时间:
2006-1-21 01:23
标题:
难道和系统有关?
那个函数在我程序里没有作用……难道和系统有关么?
作者:
Nothing
时间:
2006-1-21 11:02
HWND dhwnd = GetDesktopWindow();
dhwnd = FindWindowEx(dhwnd, 0, "
rogman", "
rogram Manager");
这个窗口才是桌面的窗口
作者:
dahuatttt
时间:
2006-1-21 15:45
标题:
这是我的代码,已经通过,语言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);
作者:
Nothing
时间:
2006-1-21 22:24
好呀,恭喜
作者:
dahuatttt
时间:
2006-1-21 22:51
标题:
可惜这个不是我要的……
这个只是测试……我想要的是如何把文件里的图贴到桌面场景上去……因为无法修改设备场景,实在不知道怎么做了。。。
欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/)
Powered by Discuz! 6.0.0