الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال بسيط جدا في الجرافيكس ؟؟

بدأه k.f.u في 11 ديسمبر 2009 · 7 رد · 584 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

Dim graphicsfun As System.Drawing.Graphics

Dim pencolor As New System.Drawing.Pen(System.Drawing.Color.Red)

graphicsfun = Me.CreateGraphics

graphicsfun.DrawLine(pencolor, 20, 30, 100, 80)

جربت في حدث الفوررم لود هالكود وماينفذ شكلها المشكله في الوسيطه الاولى للطريقه drawline مع اني نقلته من كتاب عموما انا اشتغل على 2005 أتمنى مساعدتي ..

السؤال الثاني .. ليه نعرف كائن ... مكتوب لتمثييل الفئه .. هل يقصد به تمثيل الشكل نفسه ؟؟

سبحان الله وبحمده سبحان الله العظيم ..أستغفر الله

samp8a5b2fc47732a301.jpg

#2

عمليات الرسم على مساحات مربعات التحكم و النماذج بالطريقة التي تريد القيام بها يجب أن تتم وقت تواجد النموذج أو مربع التحكم في أعلى الترتيب Z يعني يجب ألا تكون المساحة المراد الرسم عليها مختفية إما قبل ظهورها الأول أي في الحدث Load أو عن طريق الإخفاء بتحديد الخاصية Visible على False أو نافذة أخرى فوق النافذة المراد الرسم على سطحها و تخفي المساحة المراد الرسم عليها.

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

لكي تحول دون اختفاء الرسم, قم بعملية الرسم داخل دالة الحدث Paint للنموذج.

السؤال الثاني : أي كائن تقصد؟

#3

أخي الكريم أشتغل البرنامج فعلا عندما وضعت الكود في الحدث click للنموذج لكن ... مافهت عليك عندما تكون المساحه ظاهره أنا عندما وضعت الكود في الحدث load كبرت النموذج الى اقصى حد معناها كل مساحة النموذج ظاهره ؟؟!!!

السؤال الثاني انا كنت أقصد كائن Graphicsfun هل اعرفه لكي امثل الشكل ولماذا لا أستخدم كلمة New مثلما استخدمتها في تعريف المتغير الثاني ؟؟

هذه أسئلتي وجزاك الله عنا كل خير ...

تم تعديل هذه المشاركة بواسطة k.f.u في 11 ديسمبر 2009 في 16:17

سبحان الله وبحمده سبحان الله العظيم ..أستغفر الله

samp8a5b2fc47732a301.jpg

#4
اقتباس
أخي الكريم أشتغل البرنامج فلا عندما وضعت في الحدث click للنموذج لكن ... مافهت عليك كيف تكون المساحه ظاهره أنا عندما وضعته في الحدث load كبرت النموذج الى اقى حد معناها كل مساحة النموذج ظاهره ؟؟!!!

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

اقتباس
السؤال الثاني انا كنت أقصد كائن Graphicsfun هل اعرفه لكي امثل الشكل ولماذا لا أستخدم كلمة New مثلما استخدمتها في تعريف المتغير الثاني ؟؟

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

#5

أخر سؤال ...............

لماذا لا نستخدم كلمة New في تعريف الكائن .... مثلما استخدمناها في المتغير الثاني ........

وهل السطر الثاني هذا فعلا مثل ما انا اقول ... متغير علشان اخزن فيه سمات هذا الكائن ؟؟؟

ومالمقصود بكود التهيئة ؟؟؟

ولك جزيل شكري وتقديري ...

أعرف انني كلفت عليك ولكني اريد ان اتمكن من هذا الموضوع

بانتظار اجابتك

سبحان الله وبحمده سبحان الله العظيم ..أستغفر الله

samp8a5b2fc47732a301.jpg

#6

عندما تقوم بتعريف الـكائن بدون إستخدام الـ NEW , تكون قد حجزت موقع في الذاكرة فقط ..

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

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#7
اقتباس
لماذا لا نستخدم كلمة New في تعريف الكائن .... مثلما استخدمناها في المتغير الثاني ........

قبل شرح لماذا لا تستطيع تعريف الكائن Graphics بـ New سأعطى لك مثال ليقرب لك ما اريد قوله.

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

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

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

1 - الألوان: يوجد لديك الكائن Color و الذى يعبر عن لون معين و يوجد بداخله كم ضخم جدا من الألوان تستطيع استخدامها او انشاء لون بخصائص معينه تريدها.

2 - القلم: كما يستطيع الرسام الحصول على مجموعه مختلفه من الأفلام لتقوم بوظيفته تستطيع انت ايضا انشاء نسخ عديده من الأقلام (بالطبع من الفئه Pen) طبعا عملية انشاء نسخ جديده من نوع معين تتم بـ New.

3 - الفرشاه: هى داخل الدوت نت مشابهه لما يستخدمه الرسام فى الواقع مع اختلاف بسيط هو ان الرسام توجد الألوان امامه فيستطيع ان يمسك الفرشاه بيده و يمزج بين الألوان اما انت فلا لذا توجد سلسله من الفئات الخاصه بالفرشاه و هى ترث النوع Brush التى تحتوى على الخصائص المشتركه بين انواع الفرش المختلفه، الفئات التى ترث الفئه Bursh هم:

  • SolidBrush : و هى فرشاه تمثل لون واحد فقط.
  • HatchBrush : و هى فرشاه تمثل شكل معين مثل مجموعه من الخطوط المتوازيه او المتداخله و اشكال اخرى.
  • LinearGradientBrush: و هى فرشاه تمثل تدرج بين لونين او اكثر.
  • TextureBrush : و هى فرشاه تمثل صوره اى بدلا من رسم الوان يتم رسم صوره بها.
  • PathGradientBrush: و هى تمثل فرشاه لتقوم بالرسم على كائن GraphicsPath.

4 - اللوحه: و هى مساحه من الذاكره لها ابعاد معينه و تمثل بمساحة الفورم او الـ ClientArea و حيث ان لكل فورم مساحة واحده فستجد انه يوجد ايضا لها مكان واحد للرسم عليه و هو مرتبط بهذه الفورم. لتقوم بالرسم على هذه المساحه لابد من استخدام الفئه Graphics و الذى يحتوى على العمليات التى تستطيع ان تقوم بها على هذه المساحه و لكن لتستخدم هذه الفئه لابد من ان تحدد لها المنطقه التى سيتم الرسم عليها اولا، طبعا انت لا تستطيع عمل هذا و لكن عوضا عن ذلك تطلب من الفورم نفسها ان تقوم بإنشاء نسخه منه لتتيح لك الرسم عليها و ذلك يتم عن طريق استدعائك للداله CreateGraphics.

اعتقد ان الأمر واضح الأن لك و إن لم يكن فدعنى اقولها لك ببساطه : تستطيع استخدام New مع الفئات Pen و Color و xxxBrush لإنه يمكن استخدامهم على اكثر من مكان ليتم الرسم بهم و لا يمكنك انشاء نسخه من الفئه Graphics لإنه لا يوجد غير مكان واحد فقط تستطيع الرسم عليه و هذا المكان هو الوحيد الذى له الصلاحيه لإنشاء نسخه من الفئه Graphics.

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 11 ديسمبر 2009 في 23:46

مدونتي: C++ Tips and Tricks

#8

خطير كلام جدا خطير

راااااااااااااااااائع يا أخي كلام أستفدت منه حتى للمحاضره مو بس لشرح المثال ........

الله يعطيك الصحه ... ماقصرت معي ... جدا كلام رائع وشرح وافي ...........

شكرا لك .. أخي الكريم .. محمد علاء ..

وشكرا للاخ الفاضل .. محمد رضى وللاخت الكريمه اشراقة فجر ...

لكم تقديري واحترامي .. من جد أنا بدونكم لاشيء

سبحان الله وبحمده سبحان الله العظيم ..أستغفر الله

samp8a5b2fc47732a301.jpg

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…