質問

このコードでは、次の呼び出しが期待されます 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。Handleプロパティ

TCanvasはHDCを所有していません。アプリケーションは、HDCを作成する必要があり、 Handleプロパティを設定します。アプリケーション HDCを解放する必要がありますときにキャンバス もはやそれを必要としません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top