مكونات لعرض المعلومات الرسومية. عرض تقديمي حول موضوع "عرض المعلومات الرسومية في دلفي." معلومات موجزة عن النظرية

لعرضهم المعلومات الرسوميةتوفر مكتبة دلفي المكونات، والتي ترد قائمتها في الجدول. 6.

الجدول 6

مكونات لعرض المعلومات الرسومية

عنصر صفحة وصف
صورة إضافي تستخدم لعرض الرسومات
PaintBox (نافذة للرسم) نظام يستخدم لإنشاء منطقة معينة في النموذج الذي يمكنك الرسم به
DrawGrid (جدول الرسومات) إضافي يستخدم لعرض البيانات غير النصية في الصفوف والأعمدة
الرسم البياني (الرسوم البيانية والرسوم البيانية) إضافي ينتمي المكون إلى عائلة مكونات TeeChart، والتي تُستخدم لإنشاء المخططات والرسوم البيانية
Chartfx (الرسوم البيانية والرسوم البيانية) اكتف اكس محرر الرسم البياني والرسوم البيانية
FIBook (صفحات Excel) اكتف اكس عنصر إدخال ومعالجة المعلومات الرقمية
فتشارت (الرسوم البيانية) اكتف اكس نافذة الرسم التخطيطي

بالإضافة إلى ذلك، يمكنك عرض وإدخال المعلومات الرسومية على سطح أي مكون نافذة لديه هذه الخاصية اللوحة القماشية- اللوحة القماشية.

جداول الصور - مكونات DrawGrid وStringGrid

عنصر رسم الشبكةيستخدم لإنشاء جدول في تطبيق يمكن أن يحتوي على صور رسومية. هذا المكون مشابه للمكون StringGridلأن الأخير مشتق من رسم الشبكة.لذلك، في رسم الشبكةجميع خصائص وأساليب وأحداث المكون موجودة StringGridباستثناء تلك المتعلقة بالنص، أي. باستثناء الخصائص الخلايا, كولز، صفوف، كائنات.ومن هذا المنطلق فإن المكون StringGridلديه قدرات أكبر بكثير من رسم الشبكةلأنه يمكن تخزين كل من الصور والنصوص في الخلايا. وإذا كنت تريد إدخال النص في بعض الخلايا رسم الشبكةفإنك ستحتاج إلى استخدام طرق عرض النص على المخطط التفصيلي لهذا، وهو أمر غير مناسب للغاية.

عناصر DrawGrid وStringGridلديك مخطط تفصيلي اللوحة القماشية،حيث يمكنك نشر الصور.

هناك طريقة خلية المستقيم،والتي تُرجع مساحة اللوحة القماشية المخصصة لخلية معينة. يتم تعريف هذه الطريقة على أنها

الدالة CellRect(ACol, ARow: Longint): TRect;

أين Acol وARow- مؤشرات الأعمدة والصفوف تبدأ من 0 عند التقاطع الذي تقع فيه الخلية. المنطقة التي يتم إرجاعها بواسطة هذه الوظيفة هي منطقة اللوحة القماشية التي يمكن رسم الصورة المطلوبة فيها. على سبيل المثال، المشغل

DrawGridl.Canvas.CopyRect(DrawGridl.CellRect(1,1),

BitMap.Canvas,Rect(0,0,BitMap.Height,BitMap.Width));

طريقة النسخ CopyRectإلى الخلية (1،1) من الجدول DrawGridlصورة من المكون خريطة نقطية.هذه الخلية هي الثانية من اليسار والثانية من الأعلى في الجدول، حيث أن المؤشرات تبدأ من 0. يرجى ملاحظة أنه إذا كانت الخلية أصغر من حجم الصورة المنسوخة، فسيظهر الجزء العلوي الأيسر فقط من الصورة في الخلية.

الصورة على قماش المكون DrawGrid وStringGrid،كما هو الحال في لوحة أي مكون، فهو عرضة للمسح عندما تتداخل نافذة التطبيق مع نوافذ أخرى، أو على سبيل المثال، عندما يتم تصغير التطبيق.

طريقة ملائمة لإدخال الصور في الخلايا رسم الشبكةهو استخدام معالج الحدث OnDrawCell.تحدث هذه الأحداث لكل خلية في الجدول في الوقت الذي يتم فيه إعادة رسمها. يبدو رأس المعالج كما يلي:

الإجراء TForml.DrawGridlDrawCell(Sender: TObject;

Acol, ARow: عدد صحيح؛ المستقيم: TRect؛ الحالة: TGridDrawState)

معامل ولايةيشير إلى حالة الخلية. وهي مجموعة يمكن أن تحتوي على العناصر التالية: gdSelected- الخلية المحددة، gdFocused- الخلية التي يتم التركيز عليها، gdFixed- خلية في منطقة ثابتة من الجدول. معامل ولايةيمكن استخدامها لعرض الخلايا بشكل مختلف في حالات مختلفة.

مكون الشكل

مكون الشكللا يمكن تصنيفها إلا بشكل مشروط كوسيلة لعرض المعلومات الرسومية، لأنها تمثل ببساطة أشكالًا هندسية مختلفة، مظللة بشكل مناسب. الخاصية الرئيسية لهذا المكون هي شكل(النموذج)، والتي يمكن أن تأخذ القيم التالية:

StRectangle - مستطيل؛

ستسكوير - مربع؛

StRoundRect - مستطيل ذو زوايا مستديرة؛

StRouhdSquare - مربع ذو زوايا مستديرة؛

StEllipse – القطع الناقص.

ست سيركل - دائرة.

خاصية أساسية أخرى للمكون هي فرشاة(فرشاة). هذه الخاصية هي كائن من النوع فرشاة,وجود عدد من الخصائص الفرعية، في لون معين (فرشاة.لون)والأسلوب (الفرشاة.النمط)ملء الشكل. يمكنك رؤية تعبئة بعض قيم النمط في الشكل. 3.2. الخاصية الثالثة المحددة للمكون شكل- قلم(القلم) الذي يحدد نمط الخط.

مكون الرسم البياني

الآن دعونا نلقي نظرة على المكون جدول.يتيح لك هذا المكون إنشاء العديد من المخططات والرسوم البيانية التي تبدو رائعة للغاية. عنصر جدوللها خصائص وأساليب وأحداث كثيرة، حتى لو تأملناها جميعا لوجب علينا أن نخصص لها فصلا كاملا. لذلك، سنقتصر على النظر في الخصائص الرئيسية فقط جدول.يمكنك العثور على الباقي في مساعدة دلفي المضمنة، أو يمكنك تجربتها فقط من خلال تجربة الرسوم البيانية.

عنصر جدولعبارة عن حاوية للأشياء مسلسل- ورثة الطبقة TChartSeries.يمثل كل كائن سلسلة من البيانات التي تتميز بأسلوب عرض معين: رسم بياني أو رسم تخطيطي معين. كل مكون جدولقد تشمل عدة حلقات. إذا كنت تريد عرض رسم بياني، فستتوافق كل سلسلة مع منحنى واحد على الرسم البياني. إذا كنت تريد عرض المخططات، فبالنسبة لبعض أنواع المخططات، يمكنك تراكب عدة سلاسل مختلفة فوق بعضها البعض، وبالنسبة لأنواع أخرى (مثل المخططات الدائرية)، فمن المحتمل أن تبدو قبيحة. ومع ذلك، حتى في هذه الحالة، يمكنك تعيين مكون واحد جدولعدة سلاسل من نفس البيانات مع أنواع مختلفة من المخططات. وبعد ذلك، من خلال تنشيط أحدهما في كل مرة، يمكنك تزويد المستخدم باختيار نوع المخطط الذي يعرض البيانات التي يهتم بها.

ضع مكونًا واحدًا أو مكونين جدولفي النموذج وانظر إلى الخصائص التي يتم فتحها في Object Inspector. وفيما يلي بعض التوضيحات لبعض منهم.

السماح بالتحريك - يحدد قدرة المستخدم على تمرير الجزء المرصود من الرسم البياني أثناء التنفيذ بالضغط على زر الفأرة الأيمن. القيم المحتملة: PMNone - التمرير محظور، PMHori/ontal، PM عمودي أو PMBoth - التمرير مسموح به، على التوالي، فقط في الاتجاه الأفقي، فقط في الاتجاه الرأسي، أو في كلا الاتجاهين.

AhowZoom - يسمح للمستخدم بتغيير تكبير الصورة في وقت التشغيل عن طريق قطع أجزاء من المخطط أو الرسم البياني باستخدام مؤشر الماوس. إذا تم رسم إطار الجزء إلى اليمين وإلى الأسفل، فسيتم تمديد هذا الجزء ليغطي مجال الرسم البياني بالكامل. وإذا تم رسم الإطار إلى الأعلى وإلى اليسار، فسيتم استعادة المقياس الأصلي.

العنوان - يحدد عنوان الرسم التخطيطي.

القدم - يحدد التسمية التوضيحية الموجودة أسفل الرسم التخطيطي. لا شيء افتراضيا. يتم تحديد نص التوقيع بواسطة الخاصية الفرعية Text.

الإطار - يحدد الإطار حول الرسم التخطيطي.

بجانب العديد من الخصائص المدرجة في Object Inspector، توجد أزرار بها علامات حذف تسمح لك باستدعاء صفحة أو أخرى من محرر المخططات - وهي نافذة متعددة الصفحات تسمح لك بتعيين جميع خصائص المخططات. يمكن أيضًا استدعاء محرر المخطط بالنقر المزدوج فوق المكون جدولأو عن طريق النقر بزر الماوس الأيمن عليه وتحديد أمر تحرير المخطط من القائمة المنبثقة.

انقر مرتين على المكون العلوي جدول.سيتم نقلك إلى نافذة محرر الرسم البياني في صفحة الرسم البياني، والتي تحتوي على عدة علامات تبويب. بادئ ذي بدء، سوف تكون مهتمًا بعلامة التبويب "السلسلة" الموجودة عليها. انقر فوق الزر "إضافة" - أضف سلسلة. سيتم نقلك إلى نافذة حيث يمكنك تحديد نوع المخطط أو الرسم البياني. في هذه الحالة، حدد دائري - مخطط دائري. باستخدام علامة التبويب "العناوين"، يمكنك تعيين عنوان المخطط، وتتيح لك علامة التبويب "أسطورة" تعيين معلمات لعرض وسيلة إيضاح المخطط (قائمة الرموز) أو إزالتها من الشاشة تمامًا، وتحدد علامة التبويب "اللوحة" مظهر اللوحة على الذي يتم عرضه في المخطط، تمنحك علامة التبويب ثلاثي الأبعاد الفرصة لتغيير مظهر المخطط الخاص بك: الإمالة، والإزاحة، والسمك، وما إلى ذلك.

عندما تعمل في محرر المخططات وتحدد نوع المخطط، فإن المكونات جدوليعرض النموذج الخاص بك مظهره مع البيانات الشرطية المدخلة فيه. لذلك، يمكنك أن ترى على الفور نتيجة تطبيق الخيارات المختلفة على تطبيقك، وهو أمر مريح للغاية.

تمنحك صفحة السلسلة، التي تحتوي أيضًا على عدد من علامات التبويب، القدرة على تحديد خيارات عرض إضافية للسلسلة. على وجه الخصوص، بالنسبة للمخطط الدائري، في علامة التبويب "تنسيق"، من المفيد تمكين خيار "دائري محاط بدائرة"، والذي سيضمن عرض المخطط كدائرة بأي حجم لمكون المخطط. في علامة التبويب "علامات"، تحدد أزرار مجموعة النمط ما سيتم كتابته على التسميات المتعلقة بالأجزاء الفردية من المخطط: القيمة - القيمة، والنسبة المئوية - النسب المئوية، والتسمية - أسماء البيانات، وما إلى ذلك.

يمكنك، إذا كنت ترغب في ذلك، إضافة سلسلة مماثلة أخرى إلى مكون المخطط هذا عن طريق النقر فوق الزر "استنساخ" الموجود في علامة تبويب السلسلة بصفحة المخطط، ثم لهذا سلسلة جديدةانقر فوق الزر "تغيير" وحدد نوع مخطط مختلف، على سبيل المثال، شريط.

اخرج من محرر المخططات، وحدد مكون المخطط السفلي في تطبيقك وكرر تعيين خصائصه باستخدام محرر المخططات. في هذه الحالة، ستحتاج إلى تحديد سلسلتين إذا كنت تريد عرض منحنيين على الرسم البياني، وتحديد نوع المخطط الخطي. بسبب ال نحن نتحدث عنفيما يتعلق بالرسوم البيانية، يمكنك استخدام علامتي التبويب "المحور" و"الجدران" لتحديد الخصائص الإحداثية للمحاور والحواف ثلاثية الأبعاد للرسم البياني.

هذا كل شيء للتصميم مظهرينتهي التطبيق. كل ما تبقى هو كتابة الكود الذي يحدد البيانات التي تريد عرضها. بالنسبة لتطبيق الاختبار، فلنقم فقط بتعيين بعض البيانات الثابتة في المخطط الدائري وبعض الوظائف في الرسوم البيانية.

لتعيين القيم المعروضة، يجب عليك استخدام أساليب السلسلة. دعونا نركز فقط على ثلاث طرق رئيسية.

طريقة واضحمسح سلسلة من البيانات التي تم إدخالها مسبقًا.

طريقة يضيف:

إضافة(Const AValue:Double; Const ALabel:String; AColor:TColor) ،

يسمح لك بإضافة نقطة جديدة إلى الرسم التخطيطي. معامل القيمةيتوافق مع القيمة المضافة، المعلمة أليبل- التسمية التي سيتم عرضها على الرسم البياني وفي وسيلة الإيضاح، لون- لون. معامل أليبل- اختياري، يمكن وضعه فارغًا: ' '. طريقة إضافةXY:

AddXY(Const AXValue، AYValue: مزدوج؛ Const ALabel: سلسلة؛ AColor: TColor)

يسمح لك بإضافة نقطة جديدة إلى الرسم البياني للوظيفة. خيارات قيمة AXو AYValueتتوافق مع الوسيطة والوظيفة. خيارات ALabel وAColorنفس الشيء كما في الطريقة يضيف.

وبالتالي، فإن إجراء تحميل البيانات في مثالنا يمكن أن يبدو كما يلي:

ثابت آل = ​​155؛ أ2=251; A3=203; A4=404; فار ط:كلمة؛ يبدأ

مع السلسلة تبدأ

Add(Al,"Workshop l",clYellow);

Add(A2"،ورشة عمل 2"،clBlue);

Add(A3"،ورشة عمل 3"،clRed);

Add(A4"،ورشة عمل 4"،clPurple); نهاية؛

السلسلة 2. واضح؛ سلسلةS.Clear؛ لأني:=0 إلى 100 تبدأ

Series2.AddXY (0.02 * بي * أنا، الخطيئة (0.02 * بي * أنا)

SeriesS.AddXY(0.02*Pi*i,cos(0.02*Pi*i) النهاية;

كلريد)؛ ، clBlue)؛

العاملين واضحهناك حاجة إليها إذا كنت ستقوم بتحديث البيانات أثناء تشغيل التطبيق.

بهذا نختتم مقدمتنا للمكون جدول.صحيح أننا نظرنا فقط في جزء صغير من قدراتها.

العمل مع الرسوماتفي دلفي، لا يتعلق الأمر بالخطوط والرسومات فحسب، بل بالطباعة أيضًا المستندات النصية. لذلك، في دلفي في العملمع الرسوماتتحتاج إلى قضاء بعض الوقت. يعمل مع الرسومات في دلفييتضمن الوصول إلى اللوحة القماشية - خاصية اللوحة القماشية للمكونات. قماش دلفيهذه لوحة تسمح للمبرمج بالوصول إلى كل نقطة من نقاطها (وحدات البكسل)، وعرض ما هو مطلوب، مثل الفنان. وبطبيعة الحال، رسم بكسل بكسل ل العمل مع الرسوماتفي دلفي ليس من الضروري، يوفر نظام دلفي قوية أدوات الرسوماتمما يسهل مهمة المبرمج.

عند العمل مع الرسومات في دلفي، يكون لدى المبرمج تحت تصرفه مخطط تفصيلي (قماش، قماش - خاصية اللوحة القماشيةمكونات دلفي)، قلم رصاص (خاصية قلم)، فرشاة (خاصية الفرشاة) للمكون أو الكائن الذي من المفترض أن ترسم عليه. عند قلم الرصاص قلموالفرش فرشاةيمكنك تغيير اللون (خاصية اللون) والنمط (خاصية النمط). يتم توفير الوصول إلى الخطوط من خلال خاصية اللوحة القماشية الخط. تتيح لك هذه الأدوات عرض النص والرسوم البيانية المعقدة جدًا للمحتوى الرياضي والهندسي، بالإضافة إلى الرسومات. بجانب، العمل مع الرسوماتيسمح لك باستخدام هذه الموارد في دلفي شبابيكمثل ملفات الرسومات والفيديو.

وبطبيعة الحال، ليس كل المكونات في دلفي لديها هذه الخصائص. على علامة التبويب إضافييقع مكون متخصص TImage، المصممة خصيصا للرسم، ولكن أيضا الممتلكات اللوحة القماشيةلدينا، على سبيل المثال، مكونات مثل ListBox، وComboBox، وStringGrid، بالإضافة إلى النموذج نفسه، الذي يضع مكوناتنا! بالإضافة إلى ذلك، لطباعة المستندات، تقوم دلفي بالوصول إلى خاصية Canvas لكائن مثل الطابعة.

الخاصية الرئيسية لكائن مثل Canvas Delphi هي بكسليكتب تي كولورأي أنها عبارة عن مجموعة ثنائية الأبعاد من النقاط (البكسلات) المحددة حسب لونها. يحدث الرسم على القماش في لحظة تعيين لون معين لأي نقطة على القماش. يمكن تعيين كل بكسل بأي لون متاح لنظام التشغيل Windows. على سبيل المثال، تنفيذ البيان

Image1.Canvas.Pixels:=clRed;

سيؤدي إلى رسم نقطة حمراء مع الإحداثيات. يمكنك معرفة لون البكسل عن طريق التعيين العكسي:

اللون:=Image1.Canvas.Pixels;

يكتب تي كولورتم تعريفه على أنه عدد صحيح طويل (LongInt). تحتوي وحدات البايت الأربعة الخاصة به على معلومات حول نسب الألوان الأزرق (B)، والأخضر (G)، والأحمر (R). في النظام الست عشري يبدو مثل هذا: 00BBGGRR $. يمكن أن تختلف نسبة كل لون من 0 إلى 255. لذلك، لعرض الحد الأقصى للنقطة الحمراء، يجب تعيينها اللون 000000FF.
بالنسبة للألوان القياسية في دلفي، يتم تعريف مجموعة من ثوابت النص. يمكنك رؤيته عن طريق فتح خاصية اللون، على سبيل المثال، لنفس النموذج في Object Inspector.

يحتوي الجدول التالي على بعض خصائص وأساليب اللوحة القماشية:

نص الإجراء (X، Y: عدد صحيح؛ مقدار ثابتالنص: سلسلة واسعة)؛
ينتج مخرجات سلسلة نصبدءًا من (X، Y) - البكسل الأيسر العلوي للنص.
عرض نص الخاصية( فارالنص: سلسلة): عدد صحيح؛
يحتوي على طول السلسلة نصبالبكسل.
ارتفاع نص الخاصية( فارالنص: سلسلة): عدد صحيح؛
يحتوي على ارتفاع الخط نصبالبكسل.
الإجراء MoveTo(X, Y: Integer);
ينقل الموضع إلى البكسل بالعنوان (X، Y).
خط الإجراء إلى (X، Y: عدد صحيح)؛
يرسم خطًا مستقيمًا من نقطة الموضع الحالي إلى البكسل بالعنوان (X، Y). يصبح العنوان (X، Y) نقطة الموضع الحالي.
مسار ملء الإجراء( مقدار ثابتالمستقيم: TRect)؛
يملأ المستطيل مستقيمعلى القماش باستخدام الفرشاة الحالية. يمكن استخدامه، من بين أمور أخرى، لمسح جزء من الصورة الموجودة على القماش.

دعنا نكتب، باستخدام طرق اللوحة هذه فقط، تطبيقًا لصورة على لوحة المكونات صورةالنص الذي تم إدخاله في المكون مذكرة:

أول شيء سنفعله هو تهيئة المتغيرات عند بدء تشغيل البرنامج. من الضروري تحديد حجم مساحة الرسم (سنقوم بإنشاء متغير عام من نوع TRect لهذا الغرض) وتعيين لون الخلفية صورةأبيض:

إجراء TForm1.FormCreate(Sender: TObject);
يبدأ
Rect.Left:=0;
Rect.Top:=0;
Rect.Right:=Image1.Width;
Rect.Bottom:=Image1.Height;
Image1.Canvas.Brush.Color:=clWhite;
نهاية;

ثم ارسم إطارًا على جانبي الصورة:

إجراء TForm1.page;
يبدأ
مع Image1.Canvas يفعل
يبدأ
MoveTo(0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Image1.Width-1, Image1.Height-1);
LineTo(0, Image1.Height-1);
LineTo(0, 0);
نهاية;
نهاية;

دعونا نجرب ما حدث. كل شيء يعمل، ولكن لم يتم عرض الإطار بعد. لذلك، دعونا نضيف الإجراء صفحةفي هذا الإجراء إنشاء نموذج. الآن انها جميلة. بعد ذلك، سنكتب إجراءً بسيطًا لمسح الصورة ومسحها. يجب أن يتم استدعاؤها قبل أي تحديث للصورة، وإلا فسوف تتداخل الصور السابقة واللاحقة.

إجراء TForm1.clearing;
يبدأ
Image1.Canvas.FillRect(Rect); //مستطيل مستقيممملوء باللون الأبيض ويتم مسح الصورة.
نهاية;

الآن جاء دور إجراء إخراج النص نفسه. لنبدأ برسم النص من النقطة (3، 3) - الزاوية اليسرى العليا من الورقة، مع مسافة بادئة طفيفة قدرها 3 بكسل. سيتم تعويض كل سطر لاحق بارتفاع الخط:

إجراء TForm1.prn;
فارط: عدد صحيح؛
يبدأ
مع Image1.Canvas يفعل
لأنا:=1 ل Memo1.Lines.Count يفعل
TextOut(3, 3+(i-1)*TextHeight("A"), Memo1.Lines);
نهاية;

الآن كل شيء جاهز لإخراج النص. سنفعل ذلك باستخدام حدث OnChange:

إجراء TForm1.Memo1Change(Sender: TObject);
يبدأ
المقاصة؛
برن؛
صفحة؛
نهاية;

وأخيرًا، طريقة تغيير حجم الخط:

إجراء TForm1.Edit1Change(Sender: TObject);
يبدأ
Memo1.Font.Size:=UpDown1.Position;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Change(Sender);
نهاية;

يمكنك تعديل هذا البرنامج لطباعة النص. للعمل مع الطابعة، تحتاج إلى توصيل الوحدة الطابعات:

وحدةوحدة 1؛

واجهه المستخدم

الاستخدامات
Windows، الرسائل، SysUtils، المتغيرات، الفئات، الرسومات، عناصر التحكم، النماذج،
مربعات الحوار، ستدكترليس، الطابعات ;

عند العمل مع الطابعة كقماش، يتم استدعاء الطريقة لبدء الطباعة BeginDoc، ثم يتم إخراج المستند، وتكتمل الطباعة عن طريق استدعاء الطريقة EndDoc:

Printer.BeginDoc;
معطابعة.قماش يفعل
يبدأ
...طباعة المستند...
نهاية;
Printer.EndDoc;

يتوفر عرض وارتفاع شبكة الطابعة من خلال الخصائص الطابعة.عرض الصفحةو الطابعة.ارتفاع الصفحة. يمكنك إنهاء الطباعة على صفحة واحدة والبدء في الطباعة على صفحة أخرى باستخدام هذه الطريقة الطابعة.صفحة جديدة.

العمل المختبري

موضوع: « الرسومات فيدلفي- بناء أبسط
الأشكال الهندسية"

معلومات موجزة عن النظرية

توفر دلفي للمطور ثلاث طرق لعرض الرسومات:

    التخطيط أثناء تشغيل البرنامج

    استخدام الرسومات التي تم إنشاؤها مسبقًا

    إنشاء الصور باستخدام المكونات الرسومية

لإنشاء الرسوم البيانية، تم إنشاء فئات خاصة توفر أدوات وطرق للرسم: تم وصف الأدوات في ثلاث فئات - Tfont، Tpen، Tbrush؛ يتم توفير منطقة الرسم والأساليب من خلال فئة Tcanvas.

فصلتفونت- يحدد خصائص الخط المستخدم لعرض النص على اللوحة القماشية. تم توضيح خصائص الفئة في قسم "الخصائص الأساسية المتوفرة لمعظم المكونات".

فصلتبن- يحدد خصائص القلم (القلم الرصاص) الذي يتم به رسم الخطوط.

ملكياتفصل تبن:

لون:Tcolor – لون الخط (افتراضي – أسود)

عرض: عدد صحيح - سمك الخط بالبكسل؛

أسلوب = (psSolid، psDash، psDot، psdashDot، psClear) - يحدد نمط الخط (صلب، متقطع، منقط، منقط بشرطة، غير مرئي)

فصلفرشاة- يضبط خصائص الفرشاة التي ترسم سطح الصورة.

ملكياتفصل فرشاة:

لون:Tcolor – لون الفرشاة (افتراضي – أبيض)

أسلوب- نمط الفرشاة، يمكن أن يأخذ القيم التالية:

BsSolid - تلوين صلب

BsClear – عدم وجود التظليل

BsVertical – الخطوط العمودية

BsBdiagonal – الخطوط القطرية اليمنى

BsDiagCross – خلية مائلة

BsHorizontal – الخطوط الأفقية

BsFdiagonal - الخطوط القطرية اليسرى

BsCross – القفص

فصلقماش- يحدد السطح الذي توضع عليه الصورة التي تم إنشاؤها، والأدوات التي يتم إنشاء الصورة بها: الخط، القلم الرصاص، الفرشاة.

بشكل افتراضي، يتم استخدام منطقة العميل الكاملة للنموذج كمنطقة عمل (لوحة قماشية) (بدون الرأس والقائمة الرئيسية وخطوط التمرير للنموذج)، ولكن يمكنك تخصيص مناطق عمل أصغر داخل النموذج باستخدام المكونات PaintBoxأو صورة. أصل إحداثيات اللوحة القماشية هو الركن الأيسر العلوي من منطقة العمل، ويتم تحديد عرض منطقة العمل من خلال الخاصية عرض العميلالارتفاع - الملكية ارتفاع العميل.

ملكياتفصل قماش:

اللوحة القماشية:Tcanvas - يحدد منطقة الرسم

فرشاة:Tbrush – فرشاة لرسم الأشكال المغلقة

الخط:Tfont – خط لعرض النص على اللوحة القماشية

قلم:Tpen – قلم رصاص (قلم) للرسم

نقاط البيع:Tpoint - الموضع الحالي للمؤشر غير المرئي على اللوحة القماشية

تعليق : نوع Tpoint - محدد على النحو التالي:

اكتب نقطة = سجل

بكسل: Tcolor - يضبط ألوان وحدات البكسل القماشية، وإحداثيات البكسل X وY. تعد خاصية البكسل ملائمة للاستخدام لرسم الرسوم البيانية باستخدام نقاط من اللون المحدد.

الطرق الرئيسية لفئة TCanvas

    إجراء الانتقال إلى(س، ص: عدد صحيح)؛ - يحرك القلم دون رسم خط إلى نقطة ذات إحداثيات (x، y).

    إجراء LineTo(س، ص: عدد صحيح)؛ - رسم خط من النقطة الحالية إلى النقطة ذات الإحداثيات (x، y).

مثال : ارسم خطًا أزرقًا قطريًا على الشكل من الزاوية العلوية اليسرى للشكل إلى الزاوية اليمنى السفلية.

لون القلم:= clblue;

MoveTo(0,0); LineTo(ClientWidth, ClientHeight);

    إجراء مستطيل(x1,y1,x2,y2:عدد صحيح); - رسم مستطيل: x1,y1 - إحداثيات الزاوية اليسرى العليا؛ x2, y2 هي إحداثيات الزاوية اليمنى السفلى.

مثال : ارسم مربعًا مظللاً باللون الأصفر يبلغ طول ضلعه 60 بكسل في منتصف الشكل.

فار Xc،Yc: عدد صحيح؛ //

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.color:=clyellow;

Canvas.rectangle(xc-30,Yc-30,xc+30,Yc+30);

    إجراء الشكل البيضاوي(x1,y1,x2,y2:عدد صحيح); - رسم قطع ناقص منقوش في مستطيل بالإحداثيات المحددة.

مثال : ارسم شكلًا بيضاويًا منقوشًا في مكون PaintBox.

PaintBox1.Canvas.Pen.Width:=4; // عرض الخط = 4 بكسل

PaintBox1.Canvas.Ellipse(0,0, PaintBox1.ClientWidth, PaintBox1.ClientHeight);

    إجراء مضلع()؛ - يرسم مضلعًا مغلقًا محددًا بمجموعة من الإحداثيات.

مثال : ارسم ماسة مملوءة تربط بين نقاط المنتصف لجوانب الشكل

فار Xc،Yc:عدد صحيح؛ // إحداثيات مركز منطقة العميل للنموذج

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.Color:=Rgb(275,140,70); // البرتقالي لون تظليل

Canvas.Polygon();

نهاية؛

    إجراء قوس(x1,y1,x2,y2,x3,y3,x4,y4:عدد صحيح); - يعرض قوس القطع الناقص الذي يحده مستطيل (x1، y1، x2، y2). يتم عرض القوس من نقطة بإحداثيات (x3,y3) إلى نقطة بإحداثيات (x4,y4) ضدفي اتجاه عقارب الساعة.

مثال : ارسم قوسًا بيضاويًا يربط منتصف الجانب العلوي للمكون
PaintBox بمنتصف جانبه الأيمن.

الإجراء Tform1.Button1Click(Sender:Tobject);

فار X3,y3,x4,y4: عدد صحيح؛

مع PaintBox1 تفعل ذلك

Canvas.Pen.Color:= clWhite;

Canvas.Pen.Width:= 3;

Canvas.rectangle(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight);

X3:= عرض العميل div 2;

X4:= عرض العميل;

Y4:= ClientHeight div 2;

Canvas.Pen.Color:= clMaroon;

Canvas.ARC(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight, x3, y3, x4, y4);

نهاية؛

    إجراء وتر(x1,y1,x2,y2,x3,y3,x4,y4:عدد صحيح); - يرسم وترًا - خط مستقيم يربط بين نقطتين من القطع الناقص: نقطة بإحداثيات (x3، y3) مع نقطة (x4، y4).

مثال : استبدل طريقة Chord في المثال المقدم لطريقة ARC واحصل على النتيجة التالية.

    إجراء فطيرة(x1,y1,x2,y2,x3,y3,x4,y4:عدد صحيح); - رسم قطعة بيضاوية تربط مركز القطع الناقص بالإحداثيات (x3,y3) و (x4,y4).

مثال : في المثال المقدم لطريقة ARC، تخيل طريقة PIE واحصل على هذه النتيجة.

    إجراء TextOut(س، ص: عدد صحيح؛ النص: سلسلة)؛ - يقوم بإخراج السلسلة التي تم تمريرها في معلمة النص إلى مستطيل تم تحديد زاويته اليسرى العليا إحداثيات س، ص. يتم تعيين خصائص الخط بواسطة أداة الخط.

مثال : اكتب اسم الرسم البياني المرسوم في أسفل النموذج.

قماش.الخط.الارتفاع:=20 ; // ارتفاع الحرف 20 بكسل

Canvas.Font.Color:=clblue;

Canvas.TextOut(10, ClientHeight-24, 'رسم بياني للدالة SIN(X)');

المكونات الرسومية

تقدم دلفي عددًا من المكونات الجاهزة التي تتيح لك التحسين واجهة المستخدم. هذه المكونات موجودة على الصفحة إضافيو نظاملوحات المكونات.

عنصرصورة(فصلتيماج) - تم إنشاؤه لعرض الصور الرسومية المخزنة في الملفات الخارجية ذات الامتدادات:

    إيكو (أيقونة، رسم تخطيطي)؛

    Bmp (صورة نقطية، صورة نقطية)؛

    Wmf، .emf (ملف التعريف)؛

    Jpg، .jpeg (صورة مضغوطة بتنسيق JPEG).

أساسي ملكيات :

الحجم التلقائي:boolean - عند التعيين على true، يقوم المكون بضبط أبعاده وفقًا لحجم الصورة المحملة؛ الافتراضي هو خطأ.

تمتد:boolean - إذا كان صحيحًا، فإن القيمة المحملة تشغل مساحة المكون بالكامل؛ الافتراضي هو خطأ.

اللوحة القماشية:Tcanvas – يستخدم للرسم داخل المكون أثناء تنفيذ البرنامج.

صورة:Tpicture - يحدد الصورة الموضوعة في المكون.

أساسي طُرقفصل الصورة:

إجراء تحميل من ملف(اسم الملف:سلسلة)؛ - يقوم بتحميل صورة من ملف يسمى Filename إلى المكون.

إجراء احفظ الملف(اسم الملف:سلسلة)؛ -يحفظ الصورة من المكون إلى ملف يسمى اسم الملف.

عنصرPaintBox - يحدد منطقة رسم مستطيلة. الخاصية الرئيسية هي اللوحة القماشية، جميع أساليب فئة Tcanvas متاحة، وليس لها خصائص مستقلة.

مثال : ارسم شكلًا بيضاويًا أصفر مدرجًا في مكون PaintBox1.

الإجراء Tform1Button1Click(sender:Tobject);

مع PaintBox1.Canvas تفعل ذلك

Brush.Color:=clyellow;

Ellipse(0,0,PaintBox1.ClientWidth, PaintBox1.ClientHeight);

نهاية;

عنصرBitBtnزر النقطية

يمكن لزر BitBtn، على عكس الزر القياسي، أن يحتوي بالإضافة إلى العنوان (Caption) على صورة محددة بواسطة الخاصية الصورة الرمزية. توجد مجموعة من أزرار BitBtn القياسية، بخصائص محددة مسبقًا (مع صورة ونقش وهدف محدد) - يتم تحديد نوع الزر القياسي من خلال الخاصية عطوف. النوع = (bkCustom، bkAbort،bkCancel، bkClose …)

المهمة رقم 1

قم بإنشاء تطبيق يحتوي على مكونين من مكونات الصورة و4 أزرار في النموذج الرئيسي ("تحميل الصورة"، "إنشاء شكل هندسي"، "تغيير اللون"، "خروج")، ويسمح لك بما يلي:

أ) تحميل في مكون Image1 المحدد من قبل المستخدم صورة بيانيةبحيث تشغل الصورة كامل مساحة مكون الصورة.

ب) تحت مكون Image1، قم بعرض النقش "هذه صورة من ملف.

(لأي قياس لحجم وموضع المكونصورةينبغي 1 النقش
تقع بدقة تحت المكون).

ج) ارسم شكلًا هندسيًا داخل مكون Image2: قطعة بيضاوية مملوءة تربط منتصف مكون الصورة مع منتصف الجوانب السفلية واليمنى لمكون الصورة.

(لأي تغيير في حجم وموضع المكونصورة2 يجب أن يتم بناء الشكل بشكل صحيح، أي. وفقا للمواصفات المتعلقة بالمكونصورة2)

د) تغيير لون خط الشكل المرسوم في Image2 بناءً على طلب المستخدم باستخدام مكون ColorDialog.

المهمة رقم 2

قم بإنشاء تطبيق يسمح لك بوضع عدة تسميات بشكل عشوائي (على سبيل المثال، الكلمة "مرحى!") في مكون الصورة. لتنفيذ ذلك، استخدم منشئ الأرقام العشوائية Randomize والدالة Random.

يجب على المستخدم إدخال أبعاد مكون الصورة والكلمة المعروضة في الصورة وعدد الكلمات.

المهمة رقم 3

قم بإنشاء تطبيق يسمح لك بتحديد اسم الشكل الهندسي من ListBox ورسم الشكل المحدد في مكون الصورة. يتم تحديد لون الشكل من مكون RadioGroup.

المهمة رقم 4

قم بتقسيم مكون PaintBox1 إلى 4 أجزاء متساوية، وقم بطلاء كل جزء بلون مختلف، على سبيل المثال: الأزرق، الأصفر، الأخضر، الأحمر.

بجوار كل ركن من أركان PaintBox1، اكتب إحداثيات تلك الزاوية (بالنسبة إلى أصل النموذج الذي يوجد عليه مكون PaintBox1).

المهمة رقم 5

مع

حدد نوع الشكل المراد رسمه من مكون Radiogroup1، ولون التعبئة من مكون Radiogroup2، وارسم الشكل المحدد في مكون الصورة.

المهمة رقم 6

قم بإنشاء تطبيق يسمح للمستخدم بتعيين أبعاد مكون PaintBox1 (بالبكسل).

قم بتقسيم مكون PaintBox1 إلى جزأين متساويين، داخل كل جزء ارسم شكلًا بيضاويًا مملوءًا باللون الذي حدده المستخدم في ColorDialog.

المهمة رقم 7

مع قم بإنشاء تطبيق يسمح لك بما يلي:

حدد اسم الشكل الهندسي من ListBox وارسم الشكل المحدد في مكون الصورة. يجب ملء الشكل باللون الذي حدده المستخدم في مكون ColorDialog إذا تم تحديد Yes في مكون RadioGroup.

المهمة رقم 8

قم بإنشاء تطبيق يسمح للمستخدم بتعيين أبعاد مكون PaintBox1 (بالبكسل).

قم بتقسيم مكون PaintBox1 إلى 4 أجزاء متساوية، داخل كل جزء ارسم شكلًا هندسيًا مختلفًا (القطع الناقص والمعين والمثلث والمستطيل). يتم تحديد لون كل شكل من قبل المستخدم في ColorGrid.

المهمة رقم 9

حدد اسم الشكل الهندسي من ListBox
الأشكال (القطع الناقص، المعين، المستطيل) ورسم
الشكل المحدد في مكون الصورة. موقع
الأشكال في مكون الصورة (الربع الأول، الربع الثاني،

الربع الثالث أو الرابع) ويتم تحديد لون الشكل
من مكونات RadioGroup.

المهمة رقم 10

قم بإنشاء تطبيق يسمح للمستخدم بتعيين أبعاد مكون PaintBox1 (بالبكسل).

بشرط ألا يكون حجم الجانب نصًا، ولا يمكن أن يكون رقمًا سالبًا، ولا يمكن أن يتجاوز حجم النموذج الأصغر.

قم بتقسيم مكون PaintBox1 إلى 4 أجزاء متساوية، داخل كل جزء ارسم شكلًا هندسيًا حدده المستخدم في Combobox (القطع الناقص والمعين والمثلث والمستطيل). يتم تحديد لون الشكل من قبل المستخدم في ColorBox.

المهمة رقم 11

قم بإنشاء تطبيق يسمح لك بما يلي:

حدد من مكون Radiogroup موضع الرسم

في مكون الصورة للمثلث الأيمن، اضبط
لون تظليل الشكل أو لون المخطط التفصيلي، اعتمادًا على
تمكين أزرار خانة الاختيار. حدد اللون عبر
مكون ColorGrid

المهمة رقم 12

قم بإنشاء تطبيق يسمح للمستخدم بتعيين أبعاد مكون PaintBox1 (بالبكسل).

بشرط ألا يكون حجم الجانب نصًا، ولا يمكن أن يكون رقمًا سالبًا، ولا يمكن أن يتجاوز حجم النموذج الأصغر.

قم بتقسيم مكون PaintBox1 إلى جزأين متساويين، داخل أحد الأجزاء ارسم شكلًا هندسيًا حدده المستخدم في Combobox (القطع الناقص والمعين والمثلث والمستطيل). يتم تحديد لون الشكل من قبل المستخدم في ColorBox.

على سبيل المثال، يمكنك تغيير لون النموذج كما يلي:

form1.Color:= ColorBox1.Colors;

المهمة رقم 13

قم بإنشاء تطبيق يسمح لك بما يلي:

أ) ارسم مربعًا في منتصف الشكل (يتم إدخال حجم جانب المربع من قبل المستخدم). بشرط ألا يكون حجم الجانب نصًا، ولا يمكن أن يكون رقمًا سالبًا، ولا يمكن أن يتجاوز حجم النموذج الأصغر.

ب) قسّم المربع إلى قطري واحد أو قطريين، اعتمادًا على إدراج أزرار خانة الاختيار، ثم قم بطلاء كل مثلث ناتج بلون مختلف. يتم اختيار اللون من قبل المستخدم.

المهمة رقم 14

قم بإنشاء تطبيق يسمح للمستخدم بتعيين أبعاد مكون PaintBox1 (بالبكسل).

بشرط ألا يكون حجم الجانب نصًا، ولا يمكن أن يكون رقمًا سالبًا، ولا يمكن أن يتجاوز حجم النموذج الأصغر.

قم بتقسيم مكون PaintBox1 إلى جزأين متساويين، داخل جزء واحد ارسم معينًا، وداخل الجزء الآخر ارسم أي مثلث. يتم تحديد لون الشكل من قبل المستخدم في ColorBox.

على سبيل المثال، يمكنك تغيير لون النموذج كما يلي:

form1.Color:= ColorBox1.Colors;

المهمة رقم 15

قم بإنشاء تطبيق يسمح لك بما يلي:

أ) ضبط أبعاد مكون الصورة أفقيًا وعموديًا لتكون هي نفسها وتساوي الرقم الذي أدخله المستخدم من لوحة المفاتيح؛

(يشترط ألا يكون حجم الجانب نصًا، ولا يمكن أن يكون رقمًا سالبًا، ولا يمكن أن يتجاوز حجم النموذج الأصغر)

ب) قسّم مكون الصورة إلى 4 مربعات متساوية بخطين أزرقين؛

ج) داخل كل مربع ناتج، ارسم دائرة منقوشة فيه (اسمح للمستخدم باختيار لون الدوائر من خلال مربع حوار اختيار اللون).

المهمة رقم 16

قم بإنشاء تطبيق يسمح للمستخدم بتعيين أبعاد مكون PaintBox1 (بالبكسل).

بشرط ألا يكون حجم الجانب نصًا، ولا يمكن أن يكون رقمًا سالبًا، ولا يمكن أن يتجاوز حجم النموذج الأصغر.

قم بتقسيم مكون PaintBox1 إلى 9 أجزاء متساوية وقم برسم كل مستطيل من رقعة الشطرنج الناتجة. يتم تحديد لون التعبئة من قبل المستخدم في ColorBox.

على سبيل المثال، يمكنك تغيير لون النموذج كما يلي:

form1.Color:= ColorBox1.Colors;

المهمة رقم 17

في النموذج، ضع مكونين للصورة وأربعة أزرار: لون الخط، ولون التعبئة، وموافق، وخروج؛ ومكون التحرير.

عند النقر فوق الزر "موافق"، يتم رسم مربع ذو ضلع X في الصورة 1، ويتم رسم مثلث قائم بأضلاع متساوية، كل منها بطول X، في الصورة 2.

يتطابق رأس المثلث مع أصل الصورة 2. يتطابق أحد رؤوس المربع مع أصل الصورة 1.

يصبح الزر موافق متاحًا فقط عند تحديد لون الخط ولون التعبئة لرسم الشكل.

X - يتم الاختيار عشوائيًا باستخدام وظائف عشوائيةويجب أن يعرض مكون التحرير قيمة X.

المهمة رقم 18

قم بإنشاء تطبيق يسمح للمستخدم بتعيين أبعاد مكون PaintBox1 (بالبكسل).

قم بتقسيم مكون PaintBox1 إلى 4 أجزاء متساوية، داخل الجزء الذي حدده المستخدم، يجب إنشاء دائرة مملوءة، يتم تحديد حجمها من قبل المستخدم. يقوم المستخدم بتحديد لون التعبئة في ColorBox.

على سبيل المثال، يمكنك تغيير لون النموذج كما يلي:

form1.Color:= ColorBox1.Colors;

قائمة المكونات لعرض المعلومات الرسومية

لعرض المعلومات الرسومية، توفر مكتبة دلفي المكونات، والتي ترد قائمتها في الجدول 4.1.

الجدول 4.1 عرض المعلومات الرسومية للمكونات التخطيطية

عنصر

صفحة

وصف

صورة

يستخدم لعرض الرسومات: الأيقونات والصور النقطية وملفات التعريف.


PaintBox (نافذة للرسم)

يستخدم لإنشاء منطقة معينة في النموذج الذي يمكنك الرسم به.


DrawGrid (جدول الرسومات)

يستخدم لعرض البيانات غير النصية في الصفوف والأعمدة.


الرسم البياني (الرسوم البيانية والرسوم البيانية)

ينتمي المكون إلى عائلة مكونات TChart، والتي تُستخدم لإنشاء المخططات والرسوم البيانية.


بالإضافة إلى ذلك، يمكنك عرض وإدخال المعلومات الرسومية على سطح أي عرض رسومات على لوحة قماشية.

اللوحة القماشية اللوحة القماشيةليس مكونًا، لذلك لا ينبغي اعتباره ضمن نطاق هذا الكتاب بالمعنى الدقيق للكلمة. ولكن نظرًا لأن العديد من المكونات، في نماذج معينة، لها مخطط تفصيلي ويوفر المخطط التفصيلي القدرة على عرض معلومات رسومية متنوعة، فلا يزال من المستحسن تقديم بعض المعلومات الأولية حول المخطط التفصيلي.

اللوحة القماشية هي مساحة المكون الذي يمكنك رسم أو عرض الصور النهائية عليه. يحتوي على خصائص وطرق تعمل على تبسيط رسومات دلفي إلى حد كبير. جميع التفاعلات المعقدة مع النظام مخفية عن المستخدم، لذلك يمكن لأي شخص ليس لديه خبرة على الإطلاق في رسومات الكمبيوتر أن يرسم في دلفي.

كل نقطة من المخطط لها إحداثيات Xو ي. نظام إحداثيات القماش، كما هو الحال في أي مكان آخر في دلفي، له أصل في الزاوية اليسرى العليا من القماش. تنسيق Xيزيد عند الانتقال من اليسار إلى اليمين، والإحداثيات ي- عند الانتقال من الأعلى إلى الأسفل. يتم قياس الإحداثيات بالبكسل. البكسل هو أصغر عنصر في سطح التصميم يمكن معالجته. الخاصية الأكثر أهمية للبيكسل هي لونه.

القماش لديه الملكية بكسل. هذه الخاصية عبارة عن مصفوفة ثنائية الأبعاد مسؤولة عن ألوان اللوحة القماشية. على سبيل المثال، اللوحة القماشية. بكسليطابق لون البكسل العاشر من اليسار والعشرون من الأعلى. يمكنك التعامل مع مصفوفة من وحدات البكسل مثل أي خاصية: قم بتغيير اللون عن طريق إعطاء البكسل قيمة جديدة، أو تحديد لونه من قيمة مخزنة فيه. على سبيل المثال، اللوحة القماشية. بكسل:=0أو اللوحة القماشية. بكسل: = clBlack- هذا لضبط البكسل على اللون الأسود.

ملكية بكسليمكن استخدامها للرسم على القماش. دعونا نحاول رسم رسم بياني بكسل تلو الآخر للمجسم الجيبي على الخطوط العريضة للنموذج. للقيام بذلك، في معالج الحدث النموذج OnPaint(الرسم) يمكنك إدراج الكود التالي:

TForm1. FormPaint(Sender: TObject);

فار، ص: حقيقي؛ // إحداثيات الوظيفة، بي: لونجينت؛ // إحداثيات البكسل

يبدأ:=clWhite;

لبكس:=0 لعرض العميل يفعل

(X هي وسيطة الرسم البياني،

:=PX*4*Pi/ClientWidth;:=Sin(X);

(PY - إحداثيات البكسل،

: =trunc (ClientHeight - (Y+1) *ClientHeight/2);

(يضبط اللون المحدد

بكسل (حول السطوع). بكسل: = 0؛

نهاية;

قم بتشغيل تطبيق الاختبار هذا وسترى النتيجة الموضحة في الشكل 4.1 أ. لقد ظهر الرسم البياني للموجة الجيبية، على الرغم من أنه ليس جيدًا جدًا، لأنه وينقسم إلى نقاط فردية - بكسل.

قماش - كائن الطبقة TCanvasلديه العديد من الأساليب التي تسمح لك برسم الرسوم البيانية والخطوط والأشكال باستخدام الخاصية قلم- ريشة. هذه الخاصية عبارة عن كائن، والذي بدوره له عدد من الخصائص. واحد منهم هو خاصية تعرفها بالفعل لون- اللون الذي تم تطبيق الرسم به. العقار الثاني - عرض(عرض الخط). يتم تحديد العرض بالبكسل. العرض الافتراضي هو 1.

ملكية أسلوبيحدد نوع الخط . يمكن لهذه الخاصية أن تأخذ القيم التالية:

القماش لديه الملكية نقاط البيعيكتب نقطة(سم .). تحدد هذه الخاصية الموضع الحالي للقلم في إحداثيات اللوحة القماشية. تحريك القلم دون رسم خط، أي: يتغير نقاط البيع، تم إنتاجها بطريقة القماش نقل إلى (X، Y).هنا ( س، ص) -إحداثيات النقطة التي يتحرك إليها القلم. هذه النقطة الحالية تصبح نقطة البداية، والتي منها الأسلوب الخط إلى (X، Y)يمكنك رسم خط إلى نقطة ذات إحداثيات ( س، ص).في هذه الحالة، تنتقل النقطة الحالية إلى نقطة نهاية الخط ويتم إجراء مكالمة جديدة LineToسوف يرسم نقطة من هذه النقطة الحالية الجديدة.

دعونا نحاول رسم الرسم البياني الجيبي من المثال السابق باستخدام قلم. في هذه الحالة، معالج حدث النموذج OnPaintقد تبدو مثل:

إجراء TForm1. FormPaint(Sender: TObject);

فار، ص: حقيقي؛ // إحداثيات الوظيفة، بي: لونجينت؛ // إحداثيات البكسل

يبدأ: =clWhite;. MoveTo(0,ClientHeight div 2);

لبكسل: =0 لعرض العميل يفعل

(X هي وسيطة الرسم البياني،

المطابق للبكسل ذو الإحداثيات РХ):=PX*4*Pi/ClientWidth;:=Sin(X);

(PY - إحداثيات البكسل،

المطابق للإحداثي Y):=trunc(ClientHeight - (Y+1) *ClientHeight/2);

(يتم رسم خط على الرسم البياني). LineTo(PX,PY);

يمكنك رؤية نتيجة التطبيق في هذا الإصدار في الشكل 4.1 ب. كما ترون، تحسنت جودة الرسومات بشكل ملحوظ.

لا يستطيع القلم رسم الخطوط المستقيمة فحسب، بل يمكنه أيضًا رسم الأشكال. للحصول على قائمة كاملة بطرق الرسم التي تستخدم القلم، راجع تعليمات دلفي المضمنة. في الوقت الحالي، كمثال، سنقدم واحدًا منهم فقط - الشكل البيضاوي، الذي يرسم شكلًا ناقصًا أو دائرة. يتم الإعلان عن ذلك

إجراءالقطع الناقص (X1، Y1، X2، Y2: عدد صحيح)؛

أين هي المعلمات X1، X2، Y1، Y2تحديد إحداثيات المستطيل الذي يصف القطع الناقص أو الدائرة. على سبيل المثال، المشغل

القطع الناقص (10، 40، 20، 50)؛

سوف نرسم دائرة قطرها 10 وإحداثيات مركزها (15، 45).

في الحالة العامة، لا يتم رسم الأشكال فارغة، ولكن يتم ملؤها باستخدام خاصية اللوحة القماشية فرشاة- فرشاة. ملكية فرشاةهو كائن لديه بدوره عدد من الخصائص. ملكية لونيحدد لون التعبئة. ملكية أسلوبيحدد نمط التعبئة (التظليل). القيمة الافتراضية أسلوبيساوي bsSolid، وهو ما يعني التلوين الصلب لون.

عند القلم قلمهناك خاصية أخرى لم نفكر فيها بعد. هذه الخاصية وضع(وضع). القيمة الافتراضية الوضع = مساءًنسخ. وهذا يعني أن الخطوط مرسومة باللون المحدد في الخاصية لون. لكن الأوضاع الأخرى ممكنة أيضًا، حيث لا يتم أخذ اللون فقط في الاعتبار لون، ولكن أيضًا لون بكسلات الخلفية المقابلة. الأكثر إثارة للاهتمام من هذه الأوضاع هو com.pmNotXor- الجمع مع الخلفية باستخدام معكوس الحصري OR. إذا تم ضبط هذا الوضع، فإن رسم نفس الشكل مرة أخرى في نفس المكان على اللوحة القماشية يؤدي إلى إزالة الصورة المرسومة مسبقًا واستعادة ألوان البكسل التي كانت قبل الصورة الأولى للشكل.

هذه الميزة للوضع com.pmNotXorيمكن استخدامها لإنشاء رسوم متحركة بسيطة. يكفي رسم شيء ما، ثم مسح ما رسمته، وإعادة رسمه بشكل طفيف - وسيبدو الرسم وكأنه ينبض بالحياة.

حاول أن تصنع رسمًا متحركًا بسيطًا بنفسك - دائرة متحركة. ابدأ تطبيقًا جديدًا وانتقل إلى تطبيقإدراج إعلان

X، Y: عدد صحيح؛

سيؤدي هذا إلى إدخال المتغيرات العالمية Xو ي- إحداثيات الصورة الحالية.

في حدث النموذج OnPaintإدراج البيانات

فرشاة. اللون:=clWhite;:=clWhite;. قلم. Mode:=pmNotXor;

يقوم أول هؤلاء المشغلين بتعيين لون الفرشاة إلى اللون الأبيض فرشاة. هذا يعني أن دائرتك سيتم رسمها باللون الأبيض من الداخل. يقوم عامل التشغيل الثاني بتعيين لون خلفية سطح النموذج إلى اللون الأبيض.

يقوم المشغل الثالث بتعيين وضع القلم com.pmNotXor، والذي سيسمح لك بمسح الصورة القديمة قبل رسم صورة جديدة.

حتى أبسط الرسوم المتحركة تحتاج إلى المزامنة. وبخلاف ذلك، سيتم تحديد سرعة الحركة حسب سرعة الكمبيوتر. ولذلك، نقل المكون إلى النموذج الموقت- مؤقت من صفحة النظام. تم وصف هذا المكون في القسم 5.7 .

يمكنك مشاهدته هناك وصف تفصيلي. في الوقت الحالي، قم بتعيين ممتلكاته فاصلةيساوي، على سبيل المثال، 30 (هذا هو وقت التعرض بالمللي ثانية، ولكن وقت التعرض الحقيقي سيكون أطول - راجع القسم 5.7) وقم بتعيين الخاصية ممكّنمتساوي خطأ شنيع(وهذا يعني أن الموقت لن يبدأ تلقائيا عند تشغيل التطبيق).

في معالج الحدث لهذا المكون OnTimerإدراج البيانات

// مسح الصورة السابقة. القطع الناقص (X-5، Y، X+5، Y-1Q)؛(X)؛

// ارسم صورة جديدة. القطع الناقص (X-5، Y، X+5، Y-10)؛

// توقف عند الوصول إلى نهاية النموذج

لو(X >= ClientWidth-20) ثم. ممكن: = خطأ؛

أول هذه العوامل يرسم دائرة في المكان الذي تم رسمها فيه سابقًا، أي. يمسح الصورة السابقة.

يقوم عامل التشغيل الأخير بإيقاف الصورة عند حافة النموذج.

الآن قم بإضافة زر إلى النموذج زرووضع العوامل في معالج النقر عليه

س: =10;: =100;. القطع الناقص (X-5، Y، X+5، Y-10)؛. ممكّن: =صحيح؛

يحدد العاملان الأولان الإحداثيات الأولية للدائرة. المشغل الثالث يرسم الدائرة في موضع البداية، والمشغل الرابع يبدأ الموقت.

بث التطبيق، تشغيله، انقر فوق الزر. سترى صورة لدائرة تتحرك عبر الشكل من اليسار إلى اليمين. ثم استخدم خيالك وقم بتحويل هذا التطبيق غير المثير للاهتمام إلى شيء أكثر إثارة.

لا يمكن للوحة القماشية عرض الصور التي تم إنشاؤها برمجيًا فحسب، بل يمكنها أيضًا عرض الصور المخزنة في ملفات رسومية. فقط اللوحة القماشية نفسها لا تحتوي على طريقة لتحميل صورة من ملف. لذلك، يجب تحميل الملف إلى كائن رسومي آخر يمكنه تلقي معلومات من الملفات الرسومية. ثم أعد كتابة الصورة من هذا الكائن إلى اللوحة القماشية باستخدام طريقة اللوحة القماشية يرسم. وصفه:

رسم (X، Y: عدد صحيح؛ الرسم: TGraphic)؛

هنا المعلمات Xو يتحديد إحداثيات الزاوية اليسرى العليا لوضع الصورة على القماش، أ رسم بياني- كائن يقوم بتخزين المعلومات. مثل هذا الكائن يمكن أن يكون، على سبيل المثال، كائنًا من النوع TBitMap، مصممة لتخزين مصفوفات البت. دعونا نرى كيف يبدو كل هذا في الممارسة العملية.

افتح تطبيقًا جديدًا، واسحب أحد المكونات إلى النموذج OpenPictureDialogمن صفحة الحوار (هذا أحد مكونات مربع الحوار الخاص بفتح الملفات الرسومية - راجع القسم 8.2 ) والزر زر. مكان OpenPictureDialogفي أي مكان في النموذج، نظرًا لأن هذا المكون غير مرئي، ثم ضع الزر في أسفل النموذج. أضف الكود التالي إلى معالج النقر على الزر الخاص بك:

إجراء TForm1. Button1Click(Sender: TObject);

فار: تبيتماب؛

// اختيار المستخدم ملف رسومي

لوافتح حوار الصورة1. ينفذ ثم

// قم بإنشاء كائن BitMap من النوع TBitMap: =TBitMap. يخلق؛

// نقل الصورة إلى النموذج Canvas. رسم (10، 10، نقطية)؛

// تدمير كائن BitMap. حر؛

نهاية;

يقوم هذا الرمز بإنشاء كائن مؤقت من النوع TBitMapبالاسم خريطة نقطية. ثم يتم استدعاء مربع الحوار لفتح ملف رسومي افتح حوار الصورة1وإذا قام المستخدم بتحديد ملف، فسيتم تنزيله إليه خريطة نقطيةطريقة تحميل من ملف. ثم استخدام الطريقة يرسميتم نسخ الصورة المحملة على القماش في المنطقة بإحداثيات الزاوية اليسرى العليا (10،10). بعد هذا الكائن المؤقت خريطة نقطيةدمرت.

قم بتشغيل التطبيق الخاص بك وانقر على الزر الخاص به. سترى أنه يمكنك تحميل أي نوع من الملفات الرسومية. bmpوسيتم عرضه على الخطوط العريضة للنموذج (انظر الشكل 4.2 أ). يمكنك العثور على ملفات رسومية في دليل الصور. في دلفي 5 و 4 عادة ما يكون موجودا في الدليل. \ملفات البرنامج\الملفات المشتركة\بورلاند المشتركة. في دلفي 3 يقع في الدليل. \program files\Borland\Delphi 3، وفي دلفي 1 - في دليل دلفي 16. يوجد في دليل الصور، على وجه الخصوص، دليل فرعي \Images\Splash\16Color\، الذي يخزن الملف الذي تم تحميله في المثال في الشكل .4.2

لقد قمت بإنشاء تطبيق جيد لعرض الملفات الرسومية. ولكن الآن دعونا نحاول أن نرى عيبها الرئيسي. دون إغلاق التطبيق الخاص بك، انتقل إلى بعض البرامج الأخرى، على سبيل المثال، العودة إلى دلفي. ثم، دون أن تفعل أي شيء هناك، ارجع إلى التطبيق قيد التشغيل. إذا كانت نافذة البرنامج التي دخلت إليها قد حظرت نافذة التطبيق الخاص بك تمامًا، فعند العودة إليها سترى أن الصورة الموجودة في النافذة قد اختفت. إذا كانت نافذة تطبيقك متداخلة جزئيًا فقط، فعند العودة إلى تطبيقك، قد ترى نتيجة مشابهة لتلك الموضحة في الشكل 4.2 ب.

ترى أنه إذا تداخلت نافذة تطبيق آخر مؤقتًا مع نافذة التطبيق الخاص بك، فإن الصورة المرسومة على مخطط النموذج تفسد. دعونا نرى كيف يمكننا القضاء على هذا العيب.

في حالة حجب إحدى النوافذ وتلف الصورة، يخبر نظام التشغيل التطبيق بأن شيئًا ما قد تغير في البيئة وأنه يجب على التطبيق اتخاذ الإجراء المناسب. بمجرد الحاجة إلى تحديث النافذة، يتم إنشاء حدث لها OnPaint. في معالج هذا الحدث (في حالتنا، حدث النموذج)، تحتاج إلى إعادة رسم الصورة.

يمكن القيام بإعادة الرسم طرق مختلفةاعتمادا على التطبيق. في مثالنا، سيكون من الممكن الإعلان عن متغير خريطة نقطية(المشغل أو العامل فار BitMap: TBitMap) يتجاوز الإجراء المذكور أعلاه، أي. اجعل هذا المتغير عالميًا عن طريق وضعه مباشرة في القسم تطبيق. المشغل أو العامل خريطة نقطية. حريمكن نقلها إلى معالج حدث النموذج OnDestroy، والذي يحدث عند إغلاق التطبيق. وبعد ذلك، أثناء تنفيذ التطبيق بالكامل، سيكون لديك نسخة من الصورة الموجودة في المكون خريطة نقطيةوتحتاج فقط إلى الدخول في معالج الحدث OnPaintالنموذج يوجد عامل واحد فقط:

رسم (10، 10، نقطية)؛

افعل ذلك، وسترى أن الصورة الموجودة في النموذج لا تتدهور بسبب أي تداخل في النوافذ.

بالإضافة إلى الطريقة المدروسة يرسميحتوي المخطط التفصيلي أيضًا على طريقة نسخ CopyRect:

CopyRect(Dest: TRect; Canvas: TCanvas; المصدر: TRect);

تقوم الطريقة بنسخ المعلمة المحددة مصدرمنطقة الصورة في لوحة مصدر الصورة اللوحة القماشيةإلى المعلمة المحددة الوجهةمساحة هذه اللوحة. يكتب TRect، تميز المناطق المستطيلة مصدرو الوجهة، الموصوفة بالفعل في القسم 3.2 .

على سبيل المثال، المشغل

CopyRect(MyRect2, Bitmap.Canvas, MyRect1);

نسخ إلى مخطط النموذج في المنطقة MyRect2صورة من المنطقة MyRect1قماش المكون الصورة النقطية.

طريقة النسخ CopyRectيتم تنفيذه في الوضع المحدد بواسطة الخاصية وضع النسخ. بشكل افتراضي، هذه الخاصية لها القيمة cmSrcCopy، وهو ما يعني ببساطة استبدال الصورة الموجودة مسبقًا في المنطقة الوجهة، للصورة المنسوخة. القيم المحتملة الأخرى وضع النسختسمح لك بدمج الصور، لكن النظر فيها خارج نطاق هذا الكتاب.

سنقتصر على هذه المعلومات الأساسية حول عرض المعلومات الرسومية على اللوحة القماشية. في القسم 3.2 تم توفير معلومات حول إخراج النص إلى المخطط التفصيلي. بشكل عام، تعتبر اللوحة القماشية كائنًا معقدًا يحتوي على العديد من الخصائص والأساليب. لكن هذا يتطلب مناقشة موسعة خارج نطاق هذا الكتاب. الكتاب التالي في سلسلة All About Delphi سوف يستكشف هذه القضايا بمزيد من التفصيل.

مكون نافذة لديه الخاصية اللوحة القماشية- اللوحة القماشية.

مكونات الصورة وPaintBox

عناصر صورةو PaintBoxتمثل سطحًا محدودًا بلوحة قماشية يمكن كتابة الصور عليها، كما هو موضح في القسم 4.2 . في هذه الحالة المكون PaintBoxبالمعنى الدقيق للكلمة، لا يقدم أي شيء جديد مقارنة برسم نموذج على القماش. بالاعتماد على PaintBoxبدلاً من الشكل، ليس له أي مزايا، باستثناء بعض الراحة في ترتيب رسم واحد أو أكثر في منطقة النافذة.

ولكن بالإضافة إلى هذه القدرات، المكون صورةهناك خصائص تسمح لك بالعمل معها أنواع مختلفةملفات رسومية.يدعم ثلاثة أنواع من الملفات - مصفوفات البت والأيقونات وملفات التعريف. تقوم جميع أنواع الملفات الثلاثة بتخزين الصور؛ الفرق يكمن فقط في طريقة تخزينها داخل الملفات وفي وسيلة الوصول إليها. مصفوفة البت (ملف ذو ملحق . bmp) يعرض لون كل بكسل في الصورة. في هذه الحالة، يتم تخزين المعلومات بطريقة تمكن أي كمبيوتر من عرض صورة بدقة وعدد الألوان المتوافقة مع تكوينه.

الصور التوضيحية (الملفات ذات الامتداد . ico) هي مصفوفات صغيرة الحجم. يتم استخدامها بشكل شائع لتمثيل أيقونات التطبيقات، في الأزرار السريعة، في عناصر القائمة، في قوائم مختلفة. طريقة تخزين الصور في الأيقونات تشبه تخزين المعلومات في مصفوفات البت، ولكن هناك أيضًا اختلافات. وعلى وجه الخصوص، لا يمكن تغيير حجم الرمز، فهو يظل بالحجم الذي تم إنشاؤه به.

لا تقوم ملفات التعريف بتخزين تسلسل البتات التي تشكل الصورة، بل معلومات حول كيفية إنشاء الصورة. يقومون بتخزين تسلسلات أوامر الرسم، والتي يمكن تكرارها عند إعادة إنشاء الصورة. وهذا يجعل مثل هذه الملفات بشكل عام أكثر إحكاما من مصفوفات البت.

عنصر صورةيسمح لك بعرض المعلومات الموجودة في الملفات الرسومية بجميع الأنواع المحددة. ويتحقق ذلك من خلال ممتلكاته صورة- اكتب الكائن صورة.

الشكل 4.3نافذة محرر الصور


للتعرف على هذه الخاصية، افتح تطبيقًا جديدًا واسحب أحد المكونات إلى النموذج صورة. قم بتمديده أو ضبط ممتلكاته محاذاةمتساوي alClientبحيث يشغل منطقة العميل الكاملة للنموذج. انقر فوق الزر الذي يحتوي على علامة الحذف بجوار الخاصية صورةفي نافذة Object Inspector أو انقر نقرًا مزدوجًا فوقه صورة. سيتم فتح نافذة محرر الصور أمامك (الشكل 4.3)، مما يسمح لك بالتحميل إلى الخاصية صورةبعض الملفات الرسومية (زر التحميل)، وحفظها أيضًا ملف مفتوحتحت اسم جديد أو في دليل جديد. انقر فوق تحميل لتحميل الملف الرسومي. ستظهر لك نافذة لفتح ملف رسومي، كما هو موضح في الشكل 4.4. أثناء تحريك المؤشر في قائمة ملفات الرسوم، يتم عرض الصور التي تحتويها في النافذة اليمنى، وفوقها أرقام توضح حجم الصورة . يمكنك تحديد أي نوع من الملفات الرسومية التي تحتاجها. دعنا نذكرك أنه يمكنك العثور على ملفات الرسوم المرفقة مع دلفي في دليل الصور. في دلفي 5 و 4 عادة ما يكون موجودا في الدليل. \ملفات البرنامج\الملفات المشتركة\بورلاند المشتركة. في دلفي 3 يقع في الدليل. \program files\Borland\Delphi 3، وفي دلفي 1 - في دليل دلفي 16. بمجرد تحميل الملف، انقر فوق "موافق" في نافذة محرر الصور وفي المكون الخاص بك صورةسيتم عرض الصورة التي حددتها. يمكنك إطلاق التطبيق الخاص بك والإعجاب به. ومع ذلك، فإنك ترى الصورة بالفعل دون تشغيل التطبيق.

عندما تقوم بتحميل صورة من ملف إلى أحد المكونات أثناء عملية التصميم صورة، فهو لا يعرضه فحسب، بل يحفظه أيضًا في التطبيق. يمنحك هذا القدرة على تسليم التطبيق الخاص بك بدون ملف رسومات منفصل. ولكن كما سنرى لاحقا، في صورةيمكنك أيضًا تحميل ملفات رسومية خارجية أثناء تشغيل التطبيق.

دعنا نعود إلى النظر في خصائص المكون صورة.

إذا قمت بتعيين الخاصية الحجم التلقائيالخامس حقيقيثم حجم المكون صورةسيتم ضبطه تلقائيًا على حجم الصورة الموضوعة فيه. إذا كان العقار الحجم التلقائيمثبتة في خطأ شنيع، فإن الصورة قد لا تتناسب مع المكون، أو على العكس من ذلك، قد تكون مساحة المكون أكبر بكثير من مساحة الصورة.

عقار آخر - تمتديسمح لك بضبط ليس المكون وفقًا لحجم الصورة، بل الصورة وفقًا لحجم المكون. ثَبَّتَ الحجم التلقائيالخامس خطأ شنيع، تمديد أو تقليص حجم المكون صورةوتثبيت تمتدالخامس حقيقي. سترى أن الرسم سيشغل كامل مساحة المكون، لكن بما أنه من غير المرجح أن يحدد الأبعاد بشكل واقعي صورةبما يتناسب تمامًا مع حجم الصورة، سيتم تشويه الصورة. ثَبَّتَ تمتدالخامس حقيقيقد يكون منطقيًا فقط لبعض الأنماط، ولكن ليس للصور. ملكية تمتدلا يؤثر على صور الأيقونات التي لا يمكن تغيير حجمها.

ملكية - مركز، ضبط ل حقيقي، لتوسيط الصورة على المنطقة صورةإذا كان حجم المكون أكبر من حجم الصورة.

دعونا نفكر في خاصية أخرى - شفاف(الشفافية). لو شفافيساوي حقيقي، ثم الصورة في صورةيصبح شفافا. يمكن استخدام هذا لتراكب الصور فوق بعضها البعض. ضع المكون الثاني في النموذج صورةوتحميل صورة أخرى فيه. فقط حاول التقاط بعض الصور ذات الخطوط العريضة المملوءة بشكل متناثر. يمكنك، على سبيل المثال، التقاط صورة من بين تلك التي يتم وضعها عادةً على الأزرار، على سبيل المثال، سهم (file.\program files\common files\borland Shared\images\buttons\arrow1l.bmp). تحرك لك صورةبحيث تتداخل مع بعضها البعض، وفي مجموعة المكونات العليا شفافمتساوي حقيقي. سترى أن الصورة العلوية لم تعد تحجب الصورة السفلية. أحد الاستخدامات المحتملة لهذه الخاصية هو تراكب النقوش المصورة على شكل مصفوفة بت. يمكن إجراء هذه النقوش باستخدام برنامج Image Editor المدمج في دلفي.

يرجى ملاحظة أن العقار شفافيؤثر فقط على مصفوفات البت. في هذه الحالة، يصبح لون البكسل السفلي الأيسر لمصفوفة البت شفافًا افتراضيًا (أي يتم استبداله بلون الصورة الموجودة أسفله).

لقد قمنا بتغطية تحميل صورة من ملف أثناء عملية التصميم. ولكن الملكية صورةكما أنه يجعل من السهل تنظيم التبادل مع الملفات الرسومية من أي نوع أثناء تنفيذ التطبيق. لشرح تقنية مثل هذا التبادل، يجب علينا أولا أن ننظر في مزيد من التفاصيل الخاصية صورة.

هذه الخاصية عبارة عن كائن، والذي بدوره يحتوي على خصائص فرعية تشير إلى الكائن الرسومي المخزن. إذا كان في صورةيتم تخزين مصفوفة بت ويتم الإشارة إليها بواسطة الخاصية صورة. الصورة النقطية. إذا تم تخزين رمز، تتم الإشارة إليه بواسطة الخاصية صورة. أيقونة. تتم الإشارة إلى ملف التعريف المخزن بواسطة الخاصية صورة. ملف تعريف. وأخيرًا، تتم الإشارة إلى الكائن الرسومي من أي نوع بواسطة الخاصية صورة. رسم بياني.

شيء صورةوخصائصه الصورة النقطية, أيقونة, ملف تعريفو رسم بيانيلديك طرق قراءة وكتابة الملف تحميل من ملفو احفظ الملف:

إجراءتحميل من ملف( مقدار ثابتاسم الملف: خيط);

إجراءاحفظ الملف( مقدار ثابتاسم الملف: خيط);

للعقارات صورة. الصورة النقطية, صورة. أيقونةو صورة. ملف تعريفيجب أن يتوافق تنسيق الملف مع فئة الكائن: مصفوفة البت، الرمز، ملف التعريف. عند قراءة ملف في الخاصية صورة. رسم بيانييجب أن يكون الملف بتنسيق ملف تعريف. وللكائن نفسه صورةيتم ضبط طرق القراءة والكتابة تلقائيًا وفقًا لنوع الملف. دعونا نشرح ذلك بمثال.

لنقم ببناء تطبيق مشابه لمثال عرض الملفات الرسومية الذي تمت مناقشته في القسم 4.2. وللتنوع، يمكنك التحكم فيه باستخدام شيء آخر غير الزر زر، والقائمة. ضع مكونًا في النموذج صورة. قم بتمديده أو ضبط ممتلكاته محاذاةمتساوي alClientبحيث يشغل منطقة العميل الكاملة للنموذج. اسحب مكون حوار فتح الملف الرسومي إلى النموذج OpenPictureDialog(انظر القسم 8.2 ). ضع عنصر القائمة الرئيسية في النموذج أيضًا القائمة الرئيسية(انظر القسم 6.1 ) وقم بتعيين قسم واحد فيه - ملف. في معالج هذا القسم، اكتب البيان

(OpenPictureDialog1.Execute) ثم. صورة. LoadFromFile(.FileName);

سيقوم هذا المشغل باستدعاء مربع حوار لفتح ملف رسومي (انظر الشكل 4.4) وتحميله في المكون الصورة1صورة من ملف حدده المستخدم (انظر الشكل 4.5). علاوة على ذلك، يمكن أن يكون الملف من أي نوع: مصفوفة بت أو رمز أو ملف تعريف.

الشكل 4.5الصورة في المكون صورةمصفوفة البت (أ) والرسم التخطيطي (6)



في هذا التطبيق الطريقة تحميل من ملفتنطبق على الصورة1. صورة. إذا تم فتح ملفات مصفوفة البت فقط، فيمكن استبدال عامل تحميل الملف بـ

صورة. الصورة النقطية LoadFromFile(.FileName);

بالنسبة للصور التوضيحية، يمكن استخدام عامل التشغيل. صورة. أيقونة. LoadFromFile(.FileName);

وبالنسبة لملفات التعريف - المشغل. صورة. ملف تعريف. LoadFromFile(.FileName);

أو. صورة. رسم بياني. LoadFromFile(.FileName);

ولكن في كل هذه الحالات، إذا كان تنسيق الملف لا يتطابق مع التنسيق المقصود، فسيحدث خطأ. الطريقة تعمل بالمثل احفظ الملفمع الفارق الذي ينطبق عليه صورةأو ل صورة. رسم بيانييقوم بحفظ صورة بأي تنسيق في ملف. على سبيل المثال، إذا قمت بتوسيع التطبيق الخاص بك بمربع حوار SavePictureDialog(انظر القسم 8.2 )، أدخل قسم "حفظ باسم" في القائمة وضع عامل التشغيل في المعالج الخاص به

حفظ الصورة الحوار 1. ينفذ ثم. صورة. SaveToFile(SavePictureDialog1.FileName);

عندها سيتمكن المستخدم من حفظ صورة بأي تنسيق في ملف باسم جديد. فقط في هذه الحالة، لتجنب الارتباك في المستقبل، يجب أن يتوافق امتداد الملف المحفوظ مع تنسيق الصورة المحفوظة.

سيعمل البرنامج بشكل مماثل تمامًا مع الصور بأي تنسيق إذا قمت باستبدال عامل الحفظ به

صورة. رسم بياني. SaveToFile(.FileName);

باستخدام الممتلكات صورة. رسم بياني. وإذا كنت تعرف تنسيق ما يتم تخزينه في المكون صورةالصور، ثم يمكنك تطبيق الطريقة احفظ الملفإلى الخصائص صورة. الصورة النقطية, صورة. أيقونةو صورة. ملف تعريف.

لجميع الكائنات المعتبرة صورة, صورة. الصورة النقطية, صورة. أيقونةو صورة. ملف تعريفيتم تحديد طرق تعيين قيم الكائنات:

تعيين(المصدر: TPersistent);

ومع ذلك، ل خريطة نقطية, أيقونةو ملف تعريفيمكنك فقط تعيين قيم للكائنات المتجانسة: على التوالي، مصفوفات البت، والأيقونات، وملفات التعريف. يتم طرح استثناء عند محاولة تعيين قيم لكائنات غير متجانسة خطأ تحويل. شيء صورة- عالمي، يمكن تعيين قيم كائنات من أي من الفئات الثلاث الأخرى. والمعنى صورةلا يمكن تعيينه إلا لكائن يتطابق نوعه مع نوع الكائن المخزن فيه.

طريقة تعيينيمكن استخدامه أيضًا لتبادل الصور مع المخزن المؤقت للحافظة. على سبيل المثال، المشغل

تعيين (Image1.Picture)؛

سيتم حفظ الصورة المخزنة في الحافظة إلى الحافظة الصورة1. عامل مماثل

تطبيق الرسومات دلفي الصورة

الصورة1. صورة. تعيين (الحافظة)؛

اقرأ في الصورة1صورة في الحافظة. علاوة على ذلك، يمكن أن يكون أي صورة وحتى النص.

كل ما عليك فعله هو أن تتذكر عند العمل مع الحافظة أن تقوم بلصقها في عامل التشغيل الاستخداماترابط الوحدة الخاصة بك إلى الوحدة كليبرد. لا تقوم دلفي بإدراج هذا الارتباط تلقائيًا.

العودة إلى خصائص المكون صورة، يمكننا أن نلاحظ عيبًا واحدًا متأصلًا في تطبيق الاختبار الخاص بنا، كما هو موضح في الشكل. 4.5 عند تحميل صور مختلفة، قد يكون حجم نافذة التطبيق إما صغيرًا جدًا، وبعد ذلك سترى جزءًا فقط من الصورة، أو كبيرًا جدًا، و ثم سيتم وضع الصورة بشكل غير جذاب في الزاوية اليسرى العليا من النموذج، مما يترك الكثير من المساحة الفارغة. يمكن التخلص من هذا العيب باستخدام الخصائص ارتفاع(الارتفاع) و عرضمكون (العرض). صورة. مع الممتلكات الحجم التلقائيمثبتة في حقيقيأبعاد صورةيتم ضبطها تلقائيًا على نفس حجم الصورة التي تم تحميلها. ويمكن استخدام هذه الأبعاد لتغيير حجم النموذج وفقًا لذلك. على سبيل المثال، يمكن استبدال الكود السابق لتحميل صورة من ملف بما يلي:

افتح حوار الصورة1. ينفذ ثم

يبدأ. صورة. LoadFromFile(.FileName); ارتفاع العميل: = Image1. الارتفاع +10؛. أعلى:=Form1. ClientRect. قمة

+ (Form1.ClientHeight - Image1.Height) div 2;. عرض العميل:=Image1. العرض+10;. اليسار: = Form1. ClientRect. غادر

+ (Form1.ClientWidth - Image1.Width) div 2;

نهاية;

يقوم هذا الرمز بتعيين حجم منطقة عميل النموذج ليكون أكبر قليلاً من حجم المكون. الصورة1والتي بدورها تتكيف مع حجم الصورة بفضل الخاصية الحجم التلقائي. قم بإجراء هذه التغييرات على تطبيقك، وقم بتشغيله، وشاهد النموذج يتكيف تلقائيًا مع حجم الصورة التي تم تحميلها.

مكون الشكل

عنصر شكللا يمكن تصنيفها إلا بشكل مشروط كوسيلة لعرض المعلومات الرسومية، لأنها تمثل ببساطة أشكالًا هندسية مختلفة، مظللة بشكل مناسب. الخاصية الرئيسية لهذا المكون هي شكل(النموذج)، والتي يمكن أن تأخذ القيم التالية:

وتظهر أمثلة هذه النماذج في الشكل 4.7

الشكل 4.7أمثلة المكونات شكل


خاصية أساسية أخرى للمكون هي فرشاة(فرشاة). هذه الخاصية هي كائن من النوع فرشاة، والذي يحتوي على عدد من الخصائص الفرعية، على وجه الخصوص: اللون ( فرشاة. لون) والأسلوب ( فرشاة. أسلوب) املأ النموذج. ملء بعض القيم أسلوبيمكنك أن ترى في الشكل 4.7 ثالث الخصائص المحددة للمكون شكل - قلم(القلم) الذي يحدد نمط الخط. هذه الخاصية مثل الملكية فرشاةتمت مناقشتها بالفعل في القسم 4.2 . يمكنك العثور على بيانات مرجعية حول هذه الخصائص في الفصل 10*.

مكون الرسم البياني

الآن دعونا نلقي نظرة على المكون جدول. يتيح لك هذا المكون إنشاء العديد من المخططات والرسوم البيانية التي تبدو رائعة جدًا (الشكل 4.8). عنصر جدوللها خصائص وأساليب وأحداث كثيرة، حتى لو تأملناها جميعا لوجب علينا أن نخصص لها فصلا كاملا. لذلك، سنقتصر على النظر في الخصائص الرئيسية فقط جدول. يمكنك العثور على الباقي في مساعدة دلفي المضمنة، أو يمكنك تجربتها فقط من خلال تجربة الرسوم البيانية.

عنصر جدولعبارة عن حاوية للأشياء مسلسليكتب TChartSeries- سلسلة من البيانات تتميز بأنماط عرض مختلفة. قد يتضمن كل مكون عدة سلاسل. إذا كنت تريد عرض رسم بياني، فستتوافق كل سلسلة مع منحنى واحد على الرسم البياني. إذا كنت تريد عرض المخططات، فبالنسبة لبعض أنواع المخططات، يمكنك الحصول على عدة سلاسل مختلفة متراكبة فوق بعضها البعض، وبالنسبة للآخرين (مثل المخططات الدائرية) فمن المحتمل أن تبدو قبيحة. ومع ذلك، في هذه الحالة أيضًا يمكنك تعيين مكون واحد جدولعدة سلاسل من نفس البيانات مع أنواع مختلفة من المخططات. وبعد ذلك، من خلال تنشيط أحدهما في كل مرة، يمكنك تزويد المستخدم باختيار نوع المخطط الذي يعرض البيانات التي يهتم بها.

ضع مكونًا واحدًا أو اثنين (إذا كنت تريد إعادة إنتاج الشكل 4.8). جدولفي النموذج وانظر إلى الخصائص التي يتم فتحها في Object Inspector. وفيما يلي بعض التوضيحات لبعض منهم.

يحدد ما إذا كان بإمكان المستخدم تمرير الجزء الذي تمت ملاحظته من الرسم البياني أثناء التنفيذ عن طريق النقر فوق زر الفأرة الأيمن. القيم المحتملة: PMNone - التمرير محظور، PMHorizontal، PMVertical أو PMBoth - التمرير مسموح به، على التوالي، فقط في الاتجاه الأفقي، فقط في الاتجاه الرأسي، أو في كلا الاتجاهين.

يسمح للمستخدم بتغيير حجم الصورة أثناء التنفيذ، وقطع أجزاء من الرسم البياني أو الرسم البياني باستخدام مؤشر الماوس (الشكل 4.8 ب أدناه يوضح لحظة عرض جزء من الرسم البياني، المعروض بالكامل في الشكل 4.8 أ).

يحدد عنوان المخطط.

يحدد التسمية للمخطط. لا شيء افتراضيا. يتم تحديد نص التوقيع بواسطة الخاصية الفرعية Text.

يحدد الحدود حول الرسم التخطيطي.

وسيلة إيضاح الرسم البياني هي قائمة من الرموز.

MarginLeft، MarginRight، MarginTop، MarginBottom

قيم الهامش الأيسر والأيمن والأعلى والأسفل.

المحور السفلي، المحور الأيسر، المحور الأيمن

تحدد هذه الخصائص خصائص المحاور السفلية واليسرى واليمنى على التوالي. يُعد تعيين هذه الخصائص أمرًا منطقيًا بالنسبة للرسوم البيانية وبعض أنواع المخططات.

الجدار الأيسر، الجدار السفلي، الجدار الخلفي

تحدد هذه الخصائص خصائص الحواف اليسرى والسفلية والخلفية لمنطقة العرض ثلاثية الأبعاد للرسم البياني، على التوالي (انظر الشكل 4.8 أ، الرسم البياني السفلي).

قائمة سلاسل البيانات المعروضة في المكون.

تمكين أو تعطيل عرض المخطط ثلاثي الأبعاد.

خصائص العرض ثلاثي الأبعاد.

مقياس ثلاثي الأبعاد (في الشكل 4.8، هذا هو سمك المخطط وعرض شرائح الرسم البياني).


بجانب العديد من الخصائص المدرجة في Object Inspector، توجد أزرار بها علامات حذف تسمح لك باستدعاء صفحة أو أخرى من محرر المخططات - وهي نافذة متعددة الصفحات تسمح لك بتعيين جميع خصائص المخططات. يمكن أيضًا استدعاء محرر المخطط بالنقر المزدوج فوق المكون جدولأو عن طريق النقر بزر الماوس الأيمن عليه وتحديد أمر تحرير المخطط من القائمة المنبثقة.

إذا كنت تريد محاولة إعادة إنتاج التطبيق الموضح في الشكل 4.8، فانقر نقرًا مزدوجًا على المكون العلوي جدول. سيتم نقلك إلى نافذة محرر الرسم البياني (الشكل 4.9) إلى صفحة الرسم البياني التي تحتوي على عدة علامات تبويب. بادئ ذي بدء، سوف تكون مهتمًا بعلامة التبويب "السلسلة" الموجودة عليها. انقر فوق الزر "إضافة" - أضف سلسلة. سيتم نقلك إلى النافذة (الشكل 4.10)، حيث يمكنك تحديد نوع المخطط أو الرسم البياني. في هذه الحالة، حدد دائري - مخطط دائري. باستخدام علامة التبويب "العناوين"، يمكنك تعيين عنوان المخطط، وتتيح لك علامة التبويب "أسطورة" تعيين معلمات لعرض وسيلة إيضاح المخطط (قائمة الرموز) أو إزالتها من الشاشة تمامًا، وتحدد علامة التبويب "اللوحة" مظهر اللوحة على الذي يتم عرضه في المخطط، تمنحك علامة التبويب ثلاثي الأبعاد الفرصة لتغيير مظهر المخطط الخاص بك: الإمالة، والإزاحة، والسمك، وما إلى ذلك.

عندما تعمل في محرر المخططات وتحدد نوع المخطط، فإن المكونات جدوليعرض النموذج الخاص بك مظهره مع البيانات الشرطية المدخلة فيه (انظر الشكل 4.11).

الشكل 4.10تحديد نوع المخطط في محرر المخططات


لذلك، يمكنك أن ترى على الفور نتيجة تطبيق الخيارات المختلفة على تطبيقك، وهو أمر مريح للغاية.

تمنحك صفحة السلسلة، التي تحتوي أيضًا على عدد من علامات التبويب، القدرة على تحديد خيارات عرض إضافية للسلسلة. على وجه الخصوص، بالنسبة للمخطط الدائري الموجود في علامة التبويب "تنسيق"، من المفيد تمكين خيار "دائري محاط بدائرة"، والذي سيضمن أنه، في أي حجم للمكون، جدولعرض الرسم البياني على شكل دائرة. في علامة التبويب "علامات"، تحدد أزرار مجموعة النمط ما سيتم كتابته على التسميات المتعلقة بالأجزاء الفردية من المخطط: القيمة - القيمة، والنسبة المئوية - النسب المئوية، والتسمية - أسماء البيانات، وما إلى ذلك. في المثال في الشكل 4.8، تم تمكين زر النسبة المئوية، وفي علامة التبويب عام، تم تعيين قالب النسبة المئوية لضمان عرض القيم الصحيحة فقط.

يمكنك، إذا كنت تريد، إضافة إلى هذا المكون جدولسلسلة أخرى مماثلة عن طريق النقر فوق الزر "استنساخ" في علامة التبويب "السلسلة" في صفحة "المخطط"، ثم بالنسبة لهذه السلسلة الجديدة، انقر فوق الزر "تغيير" وتحديد نوع مخطط مختلف، على سبيل المثال، شريط. بالطبع، سيبدو نوعان مختلفان من المخططات في نفس الرسم سيئين. ولكن يمكنك إيقاف تشغيل المؤشر الخاص بهذه السلسلة الجديدة في علامة التبويب "السلسلة"، ثم السماح للمستخدم باختيار نوع أو نوع آخر من عرض المخطط (سنوضح كيفية القيام بذلك أدناه).

اخرج من محرر المخططات، وحدد المكون السفلي في تطبيقك جدولوكرر خصائص الإعداد لها باستخدام محرر المخطط. في هذه الحالة، ستحتاج إلى تحديد سلسلتين إذا كنت تريد عرض منحنيين على الرسم البياني، وتحديد نوع المخطط الخطي. وبما أننا نتحدث عن الرسوم البيانية، يمكنك استخدام علامتي التبويب "المحور" و"الجدران" لتحديد الخصائص الإحداثية للمحاور والحواف ثلاثية الأبعاد للرسم البياني.

وبهذا يكتمل تصميم مظهر التطبيق. كل ما تبقى هو كتابة الكود الذي يحدد البيانات التي تريد عرضها. بالنسبة لتطبيق الاختبار، فلنقم بتعيين بعض البيانات الثابتة فقط في المخطط الدائري، ودوال الجيب وجيب التمام في الرسوم البيانية.

لتعيين القيم المعروضة، يجب عليك استخدام أساليب السلسلة مسلسل. دعونا نركز فقط على ثلاث طرق رئيسية.

طريقة واضحمسح سلسلة من البيانات التي تم إدخالها مسبقًا.

طريقة يضيف:

(قيمة Const: مزدوج؛ Const ALabel: سلسلة؛: TColor)

يسمح لك بإضافة نقطة جديدة إلى الرسم التخطيطي. معامل القيمةيتوافق مع القيمة المضافة، المعلمة أليبل- الاسم الذي سيتم عرضه على الرسم البياني وفي وسيلة الإيضاح، لون- لون. معامل أليبل- اختياري، يمكن ضبطه فارغًا: "".

طريقة أضفXY:(Const AXValue، AYValue: مزدوج؛ ALabel: سلسلة؛ AColor: TColor)

يسمح لك بإضافة نقطة جديدة إلى الرسم البياني للوظيفة. خيارات قيمة AXو AYValueتتوافق مع الوسيطة والوظيفة. خيارات أليبلو لوننفس الشيء كما في الطريقة يضيف.

وبالتالي، فإن إجراء تحميل البيانات في مثالنا يمكن أن يبدو كما يلي:

155;=251;=203;=404;

فار: كلمة؛

يبدأالسلسلة 1 يفعل

يبدأ;(A1، "ورشة عمل 1"، clYellow)؛(A2، "ورشة عمل 2"، clBlue)؛(A3، "ورشة عمل 3"، clRed)؛(A4، "ورشة عمل 4"، clPurple);(A4، "ورشة عمل 4"، clPurple);

نهاية؛. واضح؛. واضح؛

لأنا: =0 ل 100 يفعل

يبدأ. AddXY (0.02*Pi*i، sin (0.02*Pi*i)، ""، clRed)؛. AddXY (0.02*Pi*i، cos (0.02*Pi*i)، ""، clBlue)؛

إذا كان لديك، على سبيل المثال، نظرا للبيانات المعروضة في الرسم البياني، سلسلتين السلسلة 1و السلسلة4أنواع مختلفة - فطيرةو حاجِز، ثم يمكنك تقديم إجراء يغير نوع الرسم التخطيطي وفقًا لطلب المستخدم. يمكن إدخال هذا الإجراء في حدث ما عند النقربعض الأزرار، أو أمر القائمة، أو، على سبيل المثال، ببساطة معالجة النقر على أحد المكونات جدول. لتحميل البيانات فيه السلسلة4ولجعل هذا المخطط غير مرئي في اللحظة الأولى، يمكنك إدراج عوامل التشغيل في نهاية الإجراء المحدد مسبقًا

تعيين (السلسلة 1)؛ نشط: =خطأ؛

يقوم أول هؤلاء المشغلين بإعادة كتابة البيانات الموضوعة فيها السلسلة 1، في سلسلة السلسلة4. والمشغل الثاني يجعل السلسلة غير مرئية السلسلة4. يتم تغيير نوع المخطط من خلال الإجراء

نشط: = لاالسلسلة 1. نشيط؛. نشط: = لاالسلسلة4. نشيط؛

في الشكل 4.8 ب، يمكنك رؤية نتيجة تحول المستخدم إلى طريقة عرض رسم بياني أخرى.

"عرض المعلومات الرسومية في دلفي"
خطة الموضوع:
1. طرق الإخراج الرسومي
المعلومات في دلفي.
2. عرض الصور.
3. العرض الهندسي
الأرقام.

1. طرق عرض المعلومات الرسومية.
هناك عدة طرق في دلفي
إخراج المعلومات الرسومية:
إخراج معدة مسبقا
الصور (مكونات الصورة،
شكل)؛
بناء الرسوم البيانية والرسوم البيانية
(مكون الرسم البياني، وما إلى ذلك)؛
التصوير
برمجياً (object
اللوحة القماشية).

2. عرض الصور.
عرض الصور باستخدام
نظرنا إلى مكون الصورة في
أحد المواضيع السابقة .
هنا سوف ننظر إلى مثال
تنفيذ الرسوم المتحركة البسيطة
عن طريق التغيير الدوري
الصورة المعروضة في
مكونات الصورة.
اذهب إلى المثال.


عرض البروتوزوا
الأشكال الهندسية على النموذج
يوفر مكون الشكل.

3. عرض الأشكال الهندسية.
الخصائص الأساسية لمكون الشكل:
فرشاة
قلم
شكل
اللون (.اللون) والنمط (.النمط) لـ
ملء الشكل.
اللون (.اللون)، النمط (.النمط)، العرض
(.Width) وطريقة الإخراج (.Mode) للخطوط
الأرقام.
نوع الشكل الهندسي.

3. عرض الأشكال الهندسية.
من عدة مكونات الشكل
يمكنك إنشاء رسومات بسيطة.
تغيير الموقف برمجيا
(.يسار، .أعلى) الحجم (.العرض، .الارتفاع) و
اللون (الفرشاة.اللون) لمكونات الشكل
في الرسم من الممكن تنفيذها
عناصر الرسوم المتحركة البسيطة.
النظر في مثال.

4. بناء الرسوم البيانية والرسوم البيانية.
الرسوم البيانية ل
مزيد من التمثيل البصري
صفائف البيانات العددية، بهم
العرض البصري والتحليل.
مثال.
لإنشاء الرسوم البيانية في دلفي
هناك عدة مكونات
واحد منهم هو مكون الرسم البياني (القسم
تي تشارت ستد).

4. بناء الرسوم البيانية والرسوم البيانية.
عرض مكون الرسم البياني بعده
الإعدادات في النموذج:

4. بناء الرسوم البيانية والرسوم البيانية.
بالإضافة إلى مفتش الكائن، الوصول إلى
يمكن أن تكون خصائص مكون المخطط
الحصول على عن طريق فتح نافذة خاصة
الحوار (الزر الأيمن على المكون \
تحرير الرسم البياني...)
يضيف
سلسلة البيانات
تغيير النوع
الرسوم البيانية

4. بناء الرسوم البيانية والرسوم البيانية.
اختيار نوع الرسم البياني:

4. بناء الرسوم البيانية والرسوم البيانية.
تحديد خصائص محاور الإحداثيات
(محور):

4. بناء الرسوم البيانية والرسوم البيانية.
عرض البيانات عادة
تم نقله إلى الرسم البياني برمجيا،
مثال:
السلسلة 1. واضح؛ (سلسلة واضحة)
لأني:=1 إلى N افعل
Series1.addxy(i, A[i], '', clGreen);
القيمة حسب
المحور X
القيمة حسب
المحور ص
إمضاء
المحور X
لون البيانات
على الرسم البياني
النظر في مثال للبناء
الرسم البياني للدالة y = Sin(x)

إضافي:
العمل المختبري № 13.1.
"عرض الصور و الهندسية
الشخصيات والرسوم المتحركة الخاصة بهم.
يمارس:
1) تطوير تطبيق للتنفيذ
أبسط الرسوم المتحركة الدورية
يغير الصورة المعروضة في
مكونات الصورة. (عدد الصور ليس كذلك
أقل من ثلاثة، حدد الصور
على المرء).

يمارس:
2) ابتكر وارسم صورة من
مكونات الشكل. برمجيا
تغيير الموضع أو الحجم أو اللون
مكونات الشكل في الرسم
تنفيذ عناصر أبسط
الرسوم المتحركة.

إضافي:
العمل المختبري رقم 13.2.
"بناء الرسوم البيانية والرسوم البيانية."
يمارس:
1) تعديل التطبيق من
العمل المخبري رقم 9 (عرض
البيانات في الجدول). أضف فرصة
عرض بعض البيانات من الجدول
على الرسم البياني أو الرسم البياني الدائري.
2) إنشاء رسم بياني للدالة المعطاة.


قمة