Cosa succede al controller di dominio quando libero una tela?
-
29-10-2019 - |
Domanda
In questo codice mi aspetto che una chiamata a ReleaseDC
avvenga in MyCanvas.Free
, ma questo codice funziona bene, come mai?
E cosa succede al CD di TCanvas?
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;
Soluzione
TCanvas
non ha un proprio controller di dominio, non acquisisce né rilascia un controller di dominio.Il suo discendente TControlCanvas
lo fa.
TCanvas non possiede l'HDC. Le applicazioni devono creare un HDC e impostare la proprietà Handle.Applicazioni deve rilasciare l'HDC quando il canvas non ne ha più bisogno.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow