دلفي-تبينتبوكس-تغيير الحجم
سؤال
أواجه مشاكل تغيير حجم تبينتبوكس والرسم على ذلك:
على النموذج الخاص بي (اسمه فمين) أسقطت تبينتبوكس (اسمه ديسبلايماج) ، الذي أحاول تغيير حجمه كما يتم تغيير حجم النموذج.
للقيام بذلك كتبت طريقة أونريزيزي () ل فمين (أكدت أنه يتم استدعاؤها بشكل صحيح) التي أحاول تغيير حجم ديسبلايماج:
procedure TFMain.FormResize(Sender: TObject);
begin
DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;
DisplayImage.Canvas.Brush.Color := clGreen;
DisplayImage.Canvas.Brush.Style := bsSolid;
DisplayImage.Canvas.Rectangle(0, 0, DisplayImage.Width, DisplayImage.Height);
end;
إمهو رمز الماضي يجب رسم مستطيل أخضر كامل الصورة على الصورة الكاملة ، مما يجعلها فعالة دائما الأخضر.بدلا من ذلك أحصل على صورة رمادية (تماما مثل معيار بغ اللون من دلفي) وكل مرة واحدة في حين خلال تغيير حجم لجزء من الثانية الصورة الخضراء تومض.
ما أنا في عداد المفقودين, هل هناك بعض المكونات المخفية أحتاج إلى تحديث بعد تغيير حجم?
شكرا لكم مقدما,
عاصفة ثلجية
المحلول
أولا وقبل كل شيء ، بدلا من القيام
DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;
على كل تغيير الحجم ، ببساطة تعيين Align := alClient
من مربع الطلاء.
ثانيا ، لرسم إلى مربع الطلاء ، واستخدام OnPaint
حدث مربع الطلاء:
procedure TFMain.DisplayImagePaint(Sender: TObject);
begin
DisplayImage.Canvas.Brush.Color := clGreen;
DisplayImage.Canvas.Brush.Style := bsSolid;
DisplayImage.Canvas.Rectangle(0, 0, DisplayImage.Width, DisplayImage.Height)
end;