哪位高手能帮忙解释一下一个小疑点
谁能帮忙解释一下一个小问题
以上程序很简单就是将当前windows屏幕复制到image上 但是有几个地方不明白
分别是
dc:HDC;
dc:=GetDC(0);
fullscreencanvas.Handle:=dc;
ReleaseDC(0,dc);
以上这些操作应该是跟句柄有关 为什么必须这么做 如果取消掉上面这些操作 会怎样?
------解决方案--------------------
首先要得到你所要操作设备的上下文信息,然后取出其中的画布信息,然后进行画布操作。最后释放掉这个设备上下文即可。
你不这样操作,你的程序就不知道你想从那个画布进行复制,也就不知道是哪个设备或者程序的画布了。
所以,必须有上面几步……
------解决方案--------------------
dc:=GetDC(0);//这是取得桌面显示设备句柄
fullscreencanvas.Handle:=dc;//将画布的Handle设置为dc
ReleaseDC(0,dc);//释放桌面设备句柄
- 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);//释放桌面设备句柄