キャンバスを解放するとDCはどうなりますか?
-
29-10-2019 - |
質問
このコードでは、次の呼び出しが期待されます ReleaseDC
で起こるために MyCanvas.Free
, 、しかし、このコードは正常に実行されますが、どうしてですか?
そしてTCanvas自身のDCはどうなりますか?
var GlobalDC: THandle;
procedure TForm1.FormCreate(Sender: TObject);
begin
GlobalDC:= GetDC(0);
end;
function LoopMeOften(const X, Y: Integer): TColor;
var
MyCanvas: TCanvas;
begin
MyCanvas := TCanvas.Create;
MyCanvas.Handle := GlobalDC;
Result := GetPixel(MyCanvas.Handle, X, Y);
MyCanvas.Free;
end;
解決
TCanvas
独自のDCを持たず、DCを取得も解放もしません。その子孫 TControlCanvas
そうだ
TCanvasはHDCを所有していません。アプリケーションは、HDCを作成する必要があり、 Handleプロパティを設定します。アプリケーション HDCを解放する必要がありますときにキャンバス もはやそれを必要としません。
所属していません StackOverflow