截屏快捷键问题

【求助】截屏问题 -C#- TryCatch
>> Content
【求助】截屏问题
在vs2008里面。在一个项目里面,有两个form,form1和form2.&我想把form2中的区域截屏生成一张图片,然后把这张图片当成form1的背景。我的代码form1中:&&&&&&&&private&void&button1_Click(object&sender,&EventArgs&e)&&&&&&&&{&&&&&&&&&&&&Form2&f2&=&new&Form2();&&&&&&&&&&&&f2.ShowDialog(this);&&&&&&&&&&&&f2.screen_capture();&&&&&&&&}&&&&&&&&public&void&set_pic(Bitmap&img)&&&&&&&&{&&&&&&&&&&&&pictureBox1.Image&=&&&&&&&&&&&&&pictureBox1.Visible&=&&&&&&&&&&&&&this.Refresh();&&&&&&&&}&&&&&&&&private&void&Form1_Load(object&sender,&EventArgs&e)&&&&&&&&{&&&&&&&&&&&&pictureBox1.Visible&=&&&&&&&&&}form2的代码是:&&&&&public&void&screen_capture()&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&Graphics&gSrc&=&this.CreateGraphics();&&&&&//创建窗体的Graphics对象&&&&&&&&&&&&&&&HandleRef&hDcSrc&=&new&HandleRef(null,&gSrc.GetHdc());&&&&&&&&&&&&&&&&&int&width&=&this.Width-SystemInformation.FrameBorderSize.W&&&&&//获取宽度&&&&&&&&&&&&&&&int&height&=&this.Height-SystemInformation.FrameBorderSize.H&&&&&//获取高度&&&&&&&&&&&&&&&&&const&int&SRCCOPY&=&0xcc0020;&&&&&//复制图块的光栅操作码&&&&&&&&&&&&&&&&&Bitmap&bmSave&=&new&Bitmap(width,&height);&&&&&//用于保存图片的位图对象&&&&&&&&&&&&&&&Graphics&gSave&=&Graphics.FromImage(bmSave);&&&&&//创建该位图的Graphics对象&&&&&&&&&&&&&&&HandleRef&hDcSave&=&new&HandleRef(null,&gSave.GetHdc());&&&&&//得到句柄&&&&&&&&&&&&&&&&&BitBlt(hDcSave,&0,&0,&width,&height,&hDcSrc,&0,&0,&SRCCOPY);&&&&&&&&&&&&&&&&&gSrc.ReleaseHdc();&&&&&&&&&&&&&&&gSave.ReleaseHdc();&&&&&&&&&&&&&&&&&gSrc.Dispose();&&&&&&&&&&&&&&&gSave.Dispose();&&&&&&&&&&//&&bmSave.Save("d:\\pic.jpg",&System.Drawing.Imaging.ImageFormat.Jpeg);&&&&&&&&&&&&Form1&f1&=&(Form1)this.O&&&&&&&&&&&&f1.set_pic(bmSave);&&&&&&&&}1.但是运行的时候说,f1的值是null,也就是没有指向到form1.这是为什么呢?2.还有个问题是我用bmSave.Save("d:\\pic.jpg",&System.Drawing.Imaging.ImageFormat.Jpeg);这句话把bmsave输出,发现截屏出现的图片并不是form2上的图片,而是form2下的图片,也就是form2覆盖着的图片。这是为什么呢?感谢大家。
------Solutions------
Rectangle&R&=&System.Windows.Forms.Screen.PrimaryScreen.B&&&Image&img&=&new&Bitmap(R.Width,&R.Height);&&&Graphics&G&=&Graphics.FromImage(img);&&&G.CopyFromScreen(new&Point(0,&0),&new&Point(0,&0),&new&Size(R.Width,&R.Height));。&&&IntPtr&dc&=&G.GetHdc();&&&G.ReleaseHdc(dc);&&&G.Dispose();&&&img&.Save("c:\\a.jpg");&&&或&&&private&static&extern&bool&BitBlt(IntPtr&hdcDest,int&nXDest,int&nYDest,int&nWidth,int&nHeight,IntPtr&hdcSrc,int&nXSrc,int&nYSrc,Int32&dwrop);&&&private&Image&CatchScreen(){Bitmap&bmpCatched&=&new&Bitmap(this.tableLayoutPanel1.Width&+&1,&this.tableLayoutPanel1.Height&+&1);Graphics&g&=&Graphics.FromImage(bmpCatched);System.Drawing.Rectangle&rect&=&new&System.Drawing.Rectangle(10,&10,&500,&400);&&g.CopyFromScreen(new&Point(this.Left&+&this.tableLayoutPanel1.Location.X&+&7,&this.tableLayoutPanel1.Location.Y&+&(panelRegisted.Height&-&tableLayoutPanel1.Height)&/&2&-&1),&new&Point(0,&0),&this.panelRegisted.ClientRectangle.Size);&&g.DrawRectangle(new&Pen(Color.Black),&0,&0,&bmpCatched.Width&-&1,&bmpCatched.Height&-&1);&&Image&image&=&bmpC&&&&&return&&&}保存到文件夹,修改BackgroundImage
------Solutions------
楼上避重就轻啊。。。不给力。。
------Solutions------
&1楼的大哥。。小弟错了。。你的方法是可行的。&我的方法不可行啊。问题1是因为f2.ShowDialog(this);&不能用showDialog,&因为用了这个之后,必须关掉form2,程序才能继续走下去。我改成了f2.show问题2.。因为Graphics&gSrc&=&this.CreateGraphics();&&这句话是创建form2窗体的画板,而form2上的控件都不能包括在内。。所以用这个方法走不通的。。。。楼上的方法是可行的。
------Solutions------
该回复于 09:32:56被版主删除安卓源码截屏问题
[问题点数:80分]
安卓源码截屏问题
[问题点数:80分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。您还未登陆,请登录后操作!
用PHOTOSHOP或者ACDSEE等图片编辑查看类软件来看
WINXP自带的图片浏览器是无法查看的
截到飚车文件夹里
大家还关注c++ 截屏问题
[问题点数:50分]
c++ 截屏问题
[问题点数:50分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2009年9月 .NET技术大版内专家分月排行榜第三2005年9月 .NET技术大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 如何截屏 的文章

 

随机推荐