首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

哪位高手能帮忙解释一下一个小疑点

2012-03-18 
谁能帮忙解释一下一个小问题Delphi(Pascal) codeprocedure TForm1.Button1Click(Sender: TObject)varfull

谁能帮忙解释一下一个小问题

Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);var  fullscreen:TBitmap;  fullscreencanvas:TCanvas;  dc:HDC;//begin  fullscreen:=TBitmap.Create;  fullscreen.Width:=Screen.Width;  fullscreen.Height:=Screen.Height;  dc:=GetDC(0);  fullscreencanvas:=TCanvas.Create;  fullscreencanvas.Handle:=dc;  fullscreen.Canvas.CopyRect(Rect(0,0,Screen.Width,Screen.Height),fullscreencanvas,Rect(0,0,Screen.Width,Screen.Height));  ReleaseDC(0,dc);  image1.Picture.Bitmap:=fullscreen;end;


以上程序很简单就是将当前windows屏幕复制到image上 但是有几个地方不明白
分别是
  dc:HDC;
dc:=GetDC(0);
fullscreencanvas.Handle:=dc;
ReleaseDC(0,dc);

以上这些操作应该是跟句柄有关 为什么必须这么做 如果取消掉上面这些操作 会怎样?

[解决办法]
首先要得到你所要操作设备的上下文信息,然后取出其中的画布信息,然后进行画布操作。最后释放掉这个设备上下文即可。

你不这样操作,你的程序就不知道你想从那个画布进行复制,也就不知道是哪个设备或者程序的画布了。
所以,必须有上面几步……
[解决办法]
dc:=GetDC(0);//这是取得桌面显示设备句柄
fullscreencanvas.Handle:=dc;//将画布的Handle设置为dc
ReleaseDC(0,dc);//释放桌面设备句柄

热点排行