سؤال

في هذه المدونة أتوقع مكالمة ReleaseDC أن يحدث في MyCanvas.Free, لكن هذا الكود يعمل بشكل جيد, كيف ذلك ؟
وما يحدث 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;
هل كانت مفيدة؟

المحلول

TCanvas لا يكون بها DC, فإنه لا يكتسب ولا يطلق العاصمة.تابع TControlCanvas لا.

من TCanvas.التعامل مع الممتلكات

TCanvas لا تملك HDC.تطبيقات يجب إنشاء HDC ، تعيين التعامل مع المنشأة.التطبيقات يجب الافراج عن HDC عندما قماش لم يعد يحتاج إليها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top