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

الرسم على الفورم

مغلق
بدأه ماهر الأفندي في 18 ديسمبر 2002 · 7 رد · 1,635 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

أشكر لكم قبولي في الموقع أنا من مدبنة حلب السورية

طالب كمبيوتر

الشيفرة:

نضع buttonعلى الفورم ونكتب به الشفرة التالية:

with canvas do begin

pen.color:=clred;

pen.width:=4;

brush.color:=$0094C7ED;

rectangle(0,0,clientwidth div 2,clientheight div 2);

brush.color:=$004F81E8;

Ellipse(0,0,clientwidth div 2,clientheight div 2);

brush.color:=clOlive;

roundrect(0,clientheight div 2,clientwidth,clientheight,50,50);

brush.color:=$00853A7D;

polygon([point(clientwidth div 2,0),point(clientwidth div 2 ,clientheight div 2),point(clientwidth,clientheight div 2)]);

brush.color:=clFuchsia;

ellipse(0,clientheight div 2,clientwidth,clientheight);

end;

ومن خاصية الفورم FormResize نكتب الشيفرة:

canvas.Refresh;

#2

عزيزي ماهر أرجو عدم الاعتماد على الأكواد التي حصلت عليها من مادة تمارين البرمجة في المعهد.

على كل مساهماتك جيدة .. أرجو لك التوفيق في دراستك

:P;)

#3

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

أن تفيدنا بأي كود كان سواء من مادة تمارين البرمجة أو غيرها فما يهمنا في النهاية هو المعرفة و العلم و كلنا تعلمنا البرمجة من كتب و مواد جامعية أو غيرها إضافة إلى أن هذا المثال موجود في أغلب كتب البرمجة

و في الملف المرفق المثال مكرر في كتابين من أهم كتب تعليم البرمجة في delphi و هما Mastering Delphi 6 و Teach Yourself Borland Delphi 4 in 21 Days و كما ذكرت لك ما يهمنا هو العلم أينما كان و نرجو منك أن تفيدنا بما لديك

أخوك حازم

delphi.zip

#4

أخي ماهر الأفندي

جزاك الله خيرا على الكود الرائع ، أتمنى لك التوفيق في دراستك

#5

(f)بناءاً على طلبك فأنا سأقدم لك معلومات قد حصلت عليها من مادة تمارين البرمجة تفضل يمكن تفيدك

:P:D;):eek::confused::'((gift)

_________________________________

الرسم أثناء التنفيذ باستخدام الفأرة

__________________________________

هناك ثلاثة أعمال تقوم بها الفأرة من أجل عملية الرسم وهي:

1- ضغط زر الفأرة.

2- تحريك الفأرة.

3- تحرير زر الفأرة.

وهناك عمل خاص وهو ضغط وهو ضغط الزر وتحريره في مكان ما على الشاشة, حيث أن الدلفي تتعرف على الأحداث الثلاثة وهي:

OnMouseUp, OnMouseMove, OnMouseDown

وتستدعي الدلفي معالج الحدث المعرف للعمل وهناك خمس وسطاء لاستخدام المعلومات الممرر وتحديد الاستجابة الصحيحة للحدث.

Sender يمثل العنصر الذي استلم عمل الفأرة

Button يحدد أي زر من أزرار الفأرة هو المطلوب ويأخذ أحد ثلاث قيم هي mpRight, mpMiddle, mpLeft

Shift يدل على حالة مفاتيح الحالة وهي مفاتيح Ctrl,Alt,Shift وله مجموعة من القيم

ssShif t- ssAlt - ssCtrl - ssLeft - ssRight - ssMiddle - ssDoulbe

X إحداثيات البعد الأفقي

Y إحداثيات البعد الشاقولي

• الاستجابة لحدث الضغط على زر الفأرة OnMouseDown Event:

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

فإذا بدأنا مشروعا جديداً أو أعطينا الشكل Form معالج للحدث OnMouseDown.

Canvas.TextOut (X, Y, ’Hello’);

وبتنفيذ هذا المشروع ستظهر الكلمة Hello عن كل ضغطة للماوس (في المكان الذي تم الضغط فيه).

عندما نبدأ أي عملية رسم فإن الضغط على زر الفأرة يحدد موقع بداية الرسم ومن ثم بحسب الرسمة تتم عملية الرسم.

فإذا أعطينا معالج الحدث OnMouseDown الشيفرة التالية:

Canvas.MoveTo(X, Y);

عندئذ ينقل موضع الرسم إلى النقطة المؤشر عليها بواسطة الفأرة.

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

• الاستجابة لحدث تحرير زر الفأرة OnMouseUp Event:

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

فإذ ضغط زر الفأرة والمؤشر يدل على زر مثلاً Button فإن الحدث OnMouseUp لا يتولد إلا إذا حرر زر الفأرة و المؤشر موجود فوق نفس الزر (العنصر) فإذا أعطينا معالج الحدث OnMouseUp الشيفرة التالية في مثالنا السابق:

Canvas.LineTo(X, Y);

عندئذ يرسم مستقيم بعد تحرير زر الماوس مع ملاحظة أنه أثناء التنفيذ أنه لن يظهر المستقيم إلا بعد تحرير زر الماوس.

• الاستجابة لحدث حركة الفأرة OnMouseMove Event:

الحدث OnMouseMove يقع عندما تتحرك الفأرة وهذا الحدث يرسل إلى العنصر الذي يقع مباشرة تحت مؤشر الفأرة عند التنفيذ.

مثال: إذا أعطينا معالج الحدث OnMouseMove الشيفرة التالية:

Canvas.LineTo(X, Y);

فإن حركة مؤشر الماوس فوق الشكل ستسبب رسم خطوط تتبع حركة الماوس مع ملاحظة أن حدث حركة الفأرة يقع أيضاً عندما لا يكون زر الفأرة مضغوط ولذلك إذا أردنا الحد من فعالية هذا الحدث وجعله يعمل فقط عندما يكون زر الفأرة مضغوطاً, علينا أن نعدل في الشيفرة

#6

الأخ العزيز شكرا لك على مشاركتك و تعقيبا على هذه المشاركة أو إضافة لها

فالCanvas له منهج إضفي و هو draw الذي استخدمته في المثال المرفق الذي

يقوم على أخذ صورة لسطح المكتب ووضعها في image تكون خاصيته align =alcient

و خاصية BorderStyle للفورم=bsnone و الHeight وWidth للفورم=screen.Width

وscreen.Height لجعل الفورم fullscreen بدون إظهار سطح المكتب كما لو استخدمنا

align =alcient للفورم ثم و عند الحدث MouseDown نضع الكود التالي

image1.Canvas.Draw(x,y,image2.Picture.Graphic);

هذا الكود يرسم الصورة الثانية على الصورة الأولى عند احداثيات الماوسy,x

طبعا لو أستخدمنا الحدث onclick فلن يعطينا أحداثيات الماوس

الآن و ولجعل البرنامج لا يغلق إلا عند الضغط على الزر esc نكتب الكود التالي

if key=27 then

Application.Terminate

else

key:=0;

طبعا في الحدث KeyDown لأن الحدث keypress لايعطينا الkey أو الذي تم ضغطه

وشكرا مرة اخرى على مشاركتك

أخوك حازم

canvas.draw.zip

#7

الى كل من الأخوة : NeptuneSoFT ، PLANSHARP ، ماهر الأفندي ، == + نصار + == ، gcc2000

هذا المنتدى لمناقشة الأمور البرمجة حول لغة دلفي

وليس لمناقشة الأمور الدراسية

وقد قمت بحذف جميع الردود الخارجة عن الموضوع

ارجوا عدم تكرار هذا الأمر

وتقبلوا اطيب تحياتي اخوكم SUM

#8

أخ ... Sum ... زي ما تريد ...

أحييك... (f)

هذا الموضوع مغلق.

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