在这段代码中,我希望在MyCanvas.Free中调用ReleaseDC,但是这段代码运行正常,怎么样?
TCanvas自己的DC会发生什么?
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 does not own the HDC. Applications must create an HDC and set the Handle property. Applications must release the HDC when the canvas no longer needs it.