环境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;