21-12-13, 08:20 PM
22-12-13, 02:27 AM
السلام عليكم...
إذا كنت تقصد رسم أقواس فيمكنك استعمال الوظيفة Circle للـ Form أو الـ PictureBox و صيغتها العامة كالتالي:
حيث:
X و Y إحداثيا مركز الدائرة.
radius نصف قطر الدائرة.
color لون خط رسم الدائرة (اختياري).
start زاوية بدء الرسم عند رسم قوس بدل دائرة (اختياري، و الافتراضي الزاوية 0 صفر، أي باتجاه الجانب الموجب للمحور الأفقي - أي إلى اليمين). الزاوية تقاس بالوحدات القطرية (Radians) و ليس بالدرجات (Degrees).
end زاوية نهاية الرسم عند رسم قوس بدل دائرة (اختياري، و الافتراضي 2Pi أي 360 درجة).
aspect نسبة التماثل (اختياري، و الافتراضي 1.0). هذه القيمة نمثل النسبة بين القطر الرأسي و القطر الأفقي. مثلاً القيمة 0.5 تعني أن القطر الرأسي نصف طول القطر الأفقي، و القيمة 2 تعني أن طول القطر الرأسي ضعف طول القطر الأفقي.
* كما نلاحظ، لرسم قوس بدل دائرة نحتاج إلى تحديد زاوية بداية القوس و زاوية نهاية القوس، علماً بأن اتجاه الرسم يكون بالاتجاه الموجب، أي عكس حركة عقارب الساعة.
* لتحويل الزوايا بين النظامين Degrees و Radians استعمل الدالتين التالييتين:
* المثال التالي يرسم قوساً من الزاوية 45 درجة إلى الزاوية 180 درجة عند منتصف النافذة و نصف قطره ربع عرض النافذة:
* المثال التالي يرسم قطعة فطيرة (Pie ) من الزاوية 45 درجة إلى الزاوية 180 درجة عند منتصف النافذة و نصف قطره ربع عرض النافذة:
* لاحظ علامتي السالب مع زاويتي البداية و النهاية. إشارات السالب هنا لا تعني أن الزاوية سالبة، و إنما تعني وصل طرف القوس بمركز الدائرة (رسم نصف قطر إلى طرف القوس).
* إذا أردت رسم نصف قطر إلى الزاوية صفر فاستعمل عدداً سالباً صغيراً جداً بدل الصفر (لأنه لا يوجد صفر سالب):
نرجو الاستفادة و السلام.
إذا كنت تقصد رسم أقواس فيمكنك استعمال الوظيفة Circle للـ Form أو الـ PictureBox و صيغتها العامة كالتالي:
كود :
Circle (X, Y), radius, color, start, end, aspect
حيث:
X و Y إحداثيا مركز الدائرة.
radius نصف قطر الدائرة.
color لون خط رسم الدائرة (اختياري).
start زاوية بدء الرسم عند رسم قوس بدل دائرة (اختياري، و الافتراضي الزاوية 0 صفر، أي باتجاه الجانب الموجب للمحور الأفقي - أي إلى اليمين). الزاوية تقاس بالوحدات القطرية (Radians) و ليس بالدرجات (Degrees).
end زاوية نهاية الرسم عند رسم قوس بدل دائرة (اختياري، و الافتراضي 2Pi أي 360 درجة).
aspect نسبة التماثل (اختياري، و الافتراضي 1.0). هذه القيمة نمثل النسبة بين القطر الرأسي و القطر الأفقي. مثلاً القيمة 0.5 تعني أن القطر الرأسي نصف طول القطر الأفقي، و القيمة 2 تعني أن طول القطر الرأسي ضعف طول القطر الأفقي.
* كما نلاحظ، لرسم قوس بدل دائرة نحتاج إلى تحديد زاوية بداية القوس و زاوية نهاية القوس، علماً بأن اتجاه الرسم يكون بالاتجاه الموجب، أي عكس حركة عقارب الساعة.
* لتحويل الزوايا بين النظامين Degrees و Radians استعمل الدالتين التالييتين:
كود :
Const PI As Double = 3.14159265358979 ' قيمة ط
' للتحويل من نظام الدرجات إلى النظام القطري
Function DegToRad(AngleDeg As Double) As Double
DegToRad = AngleDeg * PI / 180
End Function
' للتحويل من النظام القطري إلى نظام الدرجات
Function RadToDeg(AngleRad As Double) As Double
RadToDeg = AngleRad * 180 / PI
End Function
* المثال التالي يرسم قوساً من الزاوية 45 درجة إلى الزاوية 180 درجة عند منتصف النافذة و نصف قطره ربع عرض النافذة:
كود :
Me.Circle (ScaleWidth / 2, ScaleHeight / 2), ScaleWidth / 4, , DegToRad(45), DegToRad(180)
* المثال التالي يرسم قطعة فطيرة (Pie ) من الزاوية 45 درجة إلى الزاوية 180 درجة عند منتصف النافذة و نصف قطره ربع عرض النافذة:
كود :
Me.Circle (ScaleWidth / 2, ScaleHeight / 2), ScaleWidth / 4, , -DegToRad(45), -DegToRad(180)
* لاحظ علامتي السالب مع زاويتي البداية و النهاية. إشارات السالب هنا لا تعني أن الزاوية سالبة، و إنما تعني وصل طرف القوس بمركز الدائرة (رسم نصف قطر إلى طرف القوس).
* إذا أردت رسم نصف قطر إلى الزاوية صفر فاستعمل عدداً سالباً صغيراً جداً بدل الصفر (لأنه لا يوجد صفر سالب):
كود :
Me.Circle (ScaleWidth / 2, ScaleHeight / 2), ScaleWidth / 4, , -0.00000001, -DegToRad(90)
نرجو الاستفادة و السلام.
22-12-13, 09:30 AM
ممتاز اخي ناجي و مشكور جدا
طيب كيف نحسب الزاويتين في كود رسم القوس
علما انه لدينا ال 3 نقاط هي احداثيات 3 كوماندات
command1.top= 3000
command1.left=5000
command2.left=5400
command3.left=5000
command2.top=3350
command3.top=3850
بالاجابة على السؤال التالي يمكنني التحكم الكامل برسم القوس
و مع الف شكر
طيب كيف نحسب الزاويتين في كود رسم القوس
علما انه لدينا ال 3 نقاط هي احداثيات 3 كوماندات
command1.top= 3000
command1.left=5000
command2.left=5400
command3.left=5000
command2.top=3350
command3.top=3850
بالاجابة على السؤال التالي يمكنني التحكم الكامل برسم القوس
و مع الف شكر
22-12-13, 06:05 PM
السلام عليكم...
عفواً... ما الذي تريد أن تفعله بالـ Commands الثلاثة، و ما هي وضعياتهم بالنسبة إلى بعضهم؟
سلام.
إقتباس :علما انه لدينا ال 3 نقاط هي احداثيات 3 كوماندات
عفواً... ما الذي تريد أن تفعله بالـ Commands الثلاثة، و ما هي وضعياتهم بالنسبة إلى بعضهم؟
سلام.
23-12-13, 05:03 AM
لقد ابتكرت الطريقة بس بقي علي معرفة نقطة تقاطع مستقيم مع دائرة و هو يمر من كوماند 3 و كوماند 2 حيث كوماند 2 هو مركز الدائرة التي بهذا الكود ستصبح
قوسا
قوسا
كود :
Me.Circle (ScaleWidth / 2, ScaleHeight / 2), ScaleWidth / 4, , DegToRad(45), DegToRad(180)