كيفية رسم المربعات مجموعة دلفي لديهم خلفيات شفافة
-
03-07-2019 - |
سؤال
وأنا أحاول الحصول على شيء دقيق جدا للعمل، فإنه يبدو مروعا جدا في الوقت الحالي. أحاول أن ترسم خلفية TGroupBox التي أشرت طاقتها وظيفة الطلاء من ذلك أن زوايا وتظهر من خلال من وجوه آبائهم. لقد حصلت على مجموعة من صناديق مجموعة متداخلة التي تبدو لائقة جدا دون XPThemes.
هل هناك طريقة لرسم جزء من خلفية شفافة في وقت التشغيل. أنا برمجة مولد النموذج، لا تستخدم دلفي طريقة عرض التصميم.
المحلول
وأنا أحاول أن تكرار هذه المشكلة مع الخطوات التالية:
1 - تعيين موضوع التقصير ويندوز XP
2 - إسقاط TGroupBox على نموذج فارغ (محاذاة = alNone)
و3 - إسقاط اثنين TGroupBoxes داخل أول واحد، مع محاذاة = alBottom ومواءمة = alClient
ولكن بصريا يبدو على ما يرام بالنسبة لي.
هل يمكنك تقديم بعض مزيد من المعلومات حول بالضبط كيف كنت قد صممت على شكل؟ أن بعض التعليمات البرمجية لصق من .DFM يكون على ما يرام.
وهنا الجزء ذي الصلة من بلدي DFM:
object GroupBox1: TGroupBox
Left = 64
Top = 56
Width = 481
Height = 361
Margins.Left = 10
Caption = 'GroupBox1'
ParentBackground = False
TabOrder = 0
object GroupBox2: TGroupBox
Left = 2
Top = 254
Width = 477
Height = 105
Align = alBottom
Caption = 'GroupBox2'
TabOrder = 0
end
object GroupBox3: TGroupBox
Left = 2
Top = 15
Width = 477
Height = 239
Align = alClient
Caption = 'GroupBox3'
TabOrder = 1
end
end
نصائح أخرى
وعندما كان لي مثل هذا الوضع، عملت مع TGroupBox في البداية ولكن بعد ذلك قرر استخدام TPaintBox (وتسمى برميل في هذه العينة) ومحاكاة الجزء رسومية من TGroupBox بدلا من ذلك.
procedure TfraNewRTMDisplay.pbPaint(Sender: TObject);
const
icMarginPixels=0;
icCornerElipsisDiameterPixels=10;
begin
pb.Canvas.Pen.Color:=clDkGray;
pb.Canvas.Pen.Width:=1;
pb.Canvas.Pen.Style:=psSolid;
pb.Canvas.Brush.Color:=m_iDisplayColor;
pb.Canvas.Brush.Style:=bsSolid;
pb.Canvas.RoundRect(icMarginPixels,
icMarginPixels,
pb.Width-icMarginPixels*2,
pb.Height-icMarginPixels*2,
icCornerElipsisDiameterPixels,
icCornerElipsisDiameterPixels);
end;
وها، التي كانت عرجاء، وكنت بحاجة فقط لعدم وضع ParentBackground := false
في بلدي منشئ والطلاء داخل مربع المجموعة عند الاقتضاء.
وها، التي كانت عرجاء، وكنت بحاجة فقط لعدم وضع ParentBackground: = كاذبة في بلدي منشئ والطلاء داخل مربع المجموعة عند الاقتضاء
اقتباس فقرة>وربما هناك شيء أنا لا أعرف ولكن في تجربتي الأخيرة، انها ليست بسيطة كما يبدو بسبب الموضوعات ومعرفة بالضبط ما منطقة لطلاء. حتى TCanvas.FloodFill لا تعمل بشكل صحيح لهذا العمل ربما لأن في بعض الأحيان، لا يحتاج نظام التشغيل لإعادة رسم كل شيء.