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;
Était-ce utile?

La solution

TCanvas N'a pas son propre DC, il n'acquiert ni ne libère un DC. Son descendant TControlCanvas Est-ce que.

De Propriété tcanvas.handle

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
scroll top