Qu'arrive-t-il au DC lorsque je libére une toile?
-
29-10-2019 - |
Question
Dans ce code, je m'attendrais à un appel à ReleaseDC
se passer dans MyCanvas.Free
, mais ce code fonctionne bien, comment se fait-il?
Et qu'arrive-t-il au DC de 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;
La solution
TCanvas
N'a pas son propre DC, il n'acquiert ni ne libère un DC. Son descendant TControlCanvas
Est-ce que.
TCANVAS ne possède pas le HDC. Les applications doivent créer un HDC et définir la propriété Handle. Les applications doivent libérer le HDC lorsque la toile n'en a plus besoin.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow