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

环境DC句柄 与 Canvas画布解决方案

2012-06-16 
环境DC句柄与Canvas画布环境DC句柄:hdc GetDC( hwnd )oldGdiObject SelectObject( hdc,newGdiObject

环境DC句柄 与 Canvas画布
环境DC句柄:
  hdc = GetDC( hwnd );
  oldGdiObject = SelectObject( hdc,newGdiObject );
  ...绘图操作...
  SelectObject( hdc,oldGdiObject );
  DeleteObject( newGdiObject );
  ReleaseDC( hdc);

Canvas画布:
  img_1.Canvas.Pen.Color := clGreen;
  img_1.Canvas.Font.Color := clGreen;
  img_1.Canvas.MoveTo(a,50);
  img_1.Canvas.LineTo(a,55);
  img_1.Canvas.TextOut(a,56,'E');


请问Canvas画布画图的时候,需不要像上面那样 SelectObject DeleteObject ReleaseDC, 我这样有没有泄露?请大哥给个标准的代码。

[解决办法]
可以看VCL相关源码,内部会调用DeleteObject等来释放的。但是有一种情况你得手动释放,比如:
var
C: TCanvas;
begin
C := TCanvas.Create;
C.Handle := GetDC(句柄);//手动设置Handle之后,必须最后手动释放
...
ReleaseDC(句柄, C.Handle);//此处必须手动释放
C.Free;
end;

探讨
大家能不能详细的比较一下,我还是比较像了解的。

热点排行