将Panel中的内容保存成一张图片的问题。。。

air123456789 2013-05-28 10:27:54
Graphics mygraphics = this.panle1.CreateGraphics();
Size s = this.plVideo.PanelPlay.Size;
bit = new Bitmap(s.Width, s.Height, mygraphics);
Graphics memoryGraphics = Graphics.FromImage(bit);
IntPtr dc1 = mygraphics.GetHdc();
IntPtr dc2 = memoryGraphics.GetHdc();
BitBlt(dc2, 0, 0, this.panle1.ClientRectangle.Width, this.panle1.ClientRectangle.Height, dc1, 0, 0, 13369376);
mygraphics.ReleaseHdc(dc1);
memoryGraphics.ReleaseHdc(dc2);
this.px.Image=bit;
这样做,是可以将panel1中的内容截图的,但是呢,因为我是使用快捷键截图的,所有 有可能本程序没有在最顶层,如果顶层是其他东西,则截图到的是其他东西,而不是panel的内容。 怎么设置窗体焦点截图啊?木有分了~~
...全文
207 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LADYGAGA_XB 2013-05-29
  • 打赏
  • 举报
回复
引用 6 楼 air123456789 的回复:
[quote=引用 5 楼 LADYGAGA_XB 的回复:] 将你需要的窗体topmost=true;截图完毕后在恢复; windowsAPI中有个获取焦点窗体的函数.
那每次截图都要把窗体显示在最前一下? 那太不友好了。。。[/quote] 那就是你设计的有问题..既然要截图为什么要让它在底层.在底层是不可能被截图的. 因为WINDOWS会自动擦除被覆盖掉的图像的. 你将后面的窗体置顶的时候又会重绘. 所以说你要想截在窗体后面的窗体是不可能的.
LADYGAGA_XB 2013-05-28
  • 打赏
  • 举报
回复
将你需要的窗体topmost=true;截图完毕后在恢复; windowsAPI中有个获取焦点窗体的函数.
air123456789 2013-05-28
  • 打赏
  • 举报
回复
引用 2 楼 jiangyaoba 的回复:
楼主上个贴还没结呢就又遇到问题了
问题多多,都没解决。
air123456789 2013-05-28
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
屏幕截图 http://www.cnblogs.com/xugang/archive/2007/12/19/1006066.html
这个方法和我用的不是差不多吗? 如果本窗体不是在最前的话,截图是会截到其他东西的,不是截到panel里的东西。 是当前屏幕中panel位置显示的东西。
OrangeMemoryH 2013-05-28
  • 打赏
  • 举报
回复
楼主上个贴还没结呢就又遇到问题了
bdmh 2013-05-28
  • 打赏
  • 举报
回复
air123456789 2013-05-28
  • 打赏
  • 举报
回复
引用 5 楼 LADYGAGA_XB 的回复:
将你需要的窗体topmost=true;截图完毕后在恢复; windowsAPI中有个获取焦点窗体的函数.
那每次截图都要把窗体显示在最前一下? 那太不友好了。。。

111,086

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧