![]() |
|
[VB.NET] ممكن مساعدة في فهم هذا الكود Graphics - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : [VB.NET] ممكن مساعدة في فهم هذا الكود Graphics (/showthread.php?tid=16812) |
ممكن مساعدة في فهم هذا الكود Graphics - sniperjawadino - 15-08-16 السلام عليكم إخواني ممكن أن أجد أي مساعدة في فهم هذا الكود ما دور MeasureString ولمادا تم إستخدام Mid وما مهمة currentChar و أيضا chars line format أنا جديد في Graphics إعدروني ![]() Static currentChar As Integer
Dim format As StringFormat = New StringFormat(StringFormatFlags.LineLimit)
Dim chars As Integer
Dim line As Integer
e.Graphics.MeasureString(Mid(TextToPrint, currentChar + 1), New Font("Lucida Console", 10, FontStyle.Bold), New SizeF(0, 0), format, chars, line)
e.Graphics.DrawString(TextToPrint.Substring(currentChar, chars), New Font("Lucida Console", 10, FontStyle.Bold), Brushes.Black, New Rectangle(0, 0, 0, 0), format)
currentChar = currentChar + chars
If currentChar < TextToPrint.Length Then
e.HasMorePages = True
Else
e.HasMorePages = False
currentChar = 0
End If
RE: ممكن مساعدة في فهم هذا الكود Graphics - silverlight - 15-08-16 اولا دعني اوضح لك أمرا هاما خاص بالجرافكس تخيل إنك ترسم علي ورقة عادية و طبعا هذه الورقة لها ابعاد ثابتة و بالتالي ولأنك ترسم هنا بنفسك فأنت تتحكم في مكان الرسم لذلك فانت تضع في اعتبارك ان حدود الرسم هي الورقة التي أمامك و بالتالي تضبط الرسم ليكون داخل حدود الورقة التي ترسم عليها أما في الكمبيوتر فعليك ان تضع في اعتبارك أن سطح الفورم أو سطح ورقة الطباعة يمثل هنا الورقة العادية التي ترسم عليها لذلك حين تريد أن نرسم شيئا عليك أن تدرس و نفهم أبعاد السطح الذي نرسم عليه و كيف نرسم عليه في الحياة العادية و عندما ترسم علي ورقة فأنت تحتاج الي أدوات لكي ترسم مثل قلم رصاص و ألوان و اشياء من هذا القبيل اما في الكمبيوتر فأدواتك في الرسم هي Brushes و Fonts و Rectangle و Point و Color و StringFormat و اشياء اخري وبدون فهم لهذا الاشياء و كيفية التعامل معها فأنت هنا لن تستطيع ان تجيد عملية الرسم أهم شئ في الرسم هو وسيلة الرسم وفي الحياة العادية فإن اليد التي ترسم بها علي الورقة تمثل اداة الرسم وما يقابل هذا في البرمجه فهو Graphics كلاس تستطيع اعتبار Graphics Class هو القلب النابض لكي شئ تراه علي شاشة الكمبيوتر او تراه مطبوع علي الطابعة و طبعا و بدون القلب لا يصح الجسد الدالة Mid دالة OverLoaded لذلك ستجد لها اكثر من صورة و الهدف منها هو تحديد بداية التكست او تحديد مكان كلمة في التكست أمثلة علي ذلك: - كود : Dim textToDraw As String = "Graphis Demo"فيما يختص ببقية أسئلتك سهل جدا إن أنا أجاوبك عليها لكن لو فعلا أنت مهتم عليك أن تدرس الكلاسات الخاصة بالجرافكس و إن شاء الله سأرد علي اي استفسار لك خاص بالجرافكس بشكل مبدئي افتح مشروع و اكتب الكود التالي في الحدث Paint الخاص بالفورم كود : Public Class Form1أعتذر للإطالة عليك RE: ممكن مساعدة في فهم هذا الكود Graphics - الوادي - 16-08-16 طالما معاك الخبير عمر silverlight (خبير الجرافكس) فأنت محظوظ. RE: ممكن مساعدة في فهم هذا الكود Graphics - sniperjawadino - 16-08-16 شكرا لك أخي silverlight والإطالة هي لمصلحتي , حتى أستفذ أكثر جزاك الله خيرا في الحقيقة دالة Mid هي دالة لتقطيع نص معين من,,,, ألى,,,,, كما شرحت لي لكن ما لم أفهم لمادا وضعت Mid في أحد باراميترات MeasureString بل ما دور MeasureString أصلا وإذا أمكن أريد فهم باراميتراتها format, chars, line أحاول البحث في قوقل لكن المواضيع قليلة و معقدة قليلا إصبر معي أخي فأنا طامع في الإستفادة من خبرتك في هذا المجال تحت وصية الأستاذ الوادي
RE: ممكن مساعدة في فهم هذا الكود Graphics - sniperjawadino - 16-08-16 استفسار آخر دالة Mid هي مشابهة لدالة Substring لمادا استخدم Mid في MeasureString و استخدم Substring في DrawString لا تنسى أخي أن تشرح لي MeasureString شكرااااااااااا RE: ممكن مساعدة في فهم هذا الكود Graphics - silverlight - 16-08-16 مقدمة : الدالة MeasureString القيمة المستردة منها عبارة عن SizeF و الهدف منها هو قياس ارتفاع و عرض أي String هذه الدالة OverLoaded و المقصد بهذا أنها لها أكثر من صورة لتمرير المتغيرات الدالة MeasureString لها 6 أشكال لتمرير المتغيرات و طبقا لإحتياج المبرمج فهو يختار الصورة التي تناسبه لإسترجاع البيانات قد تسأل نفسك لماذا نسترد منها SizeF و ليس Size الجواب علي ذلك هو أن SizeF أكثر دقة من Size عموما سهل إننا تغير من SizeF الي Size وهذا مرتبط بإحتياجات الرسم لكن المهم في الأمر هنا هو السطح الذي سوف تظهر عليه الكلمات المرسومة او المطبوعة لأننا غالبا إما أن ترسم علي سطح أبعاده معروفة مسبقا او سوف ترسم علي سطح قد تتغير أبعاده مثلا ورقة الطباعة لها اكثر من حجم و بالتالي و لأنك لا تعلم ما هو النوع الذي سوف يستخدمه مستخدم برنامجك عند الطباعة لذلك عليك هنا ان تضع في اعتبارك ان ابعاد السطح قد تتغير نفس الأمر ينطبق علي الرسم علي الفورم او علي الكونترول حيث ان الفورم تتغير ابعاده إما عن طريق الماوس او عن طريق Maximize وبنفس المنطق يجب أن تضع كل هذا في اعتبارك عموما في جميع الحالات و سواء انت تطبع علي ورقة او ترسم علي الفورم فأنت هنا تتعامل مع سطع غير محدد الأبعاد لهذا نحتاج لقياس طول و عرض String خاصة أن الطول يؤثر في الارتفاع الإجمالي للرسم و عرض التكست أيضا يؤثر في العرض الإجمالي للسطح المراد الرسم عليه طبعا إرتفاع String يحدده حجم الفونت لذلك ستجد أن الفونت أحد المتغيرات الهامة المستخدمة في الدالة أمثلة للتوضيح : المثال الأول: في هذا المثال نحسب ابعاد التكست و منها نحسب عرض و ارتفاع مستطيل نرسمه خارج حدود التكست مكان الرسم الخاص بالمستطيل شئ تحدده انت اما ابعاد المستطيل قتم حسابها من حساب عرض و ارتفاع التكست ولتنفيذ الكود افتح مشروع و ضع به باتون و اكتب الكود بالشكل التالي حاول تغير ارتفاع الفونت أكثر من مرة و لتري ما سيحدث معاك الطريف في الأمر ستكتشف انه و بالرغم من أن أبعاد المستطيل تساوي ابعاد التكست لكنك ستلاحظ ان المستطيل تم رسمه خارج حدود التكست و السبب في ذلك ان الدالة MeasureString لا نسترد منها أبعاد التكست بكل دقة و لكنها أيضا تضيف قيمة صغيرة لعرض و ارتفاع التكست كود : Public Class Form1المثال الثاني: هو خليط من الكود الخاص بك و الذي تفضلت بكتابته في سؤالك الذي تستخدمه في قياس ارتفاع وعرض التكست و لسوف استخدم نفس الفكرة الموجودة في المثال الأول PHP كود : Public Class Form1سؤال : هل يوجد طرق أخري لقياس ارتفاع و عرض اي String بدون اللجوء الي الجرافكس كلاس؟ الجواب يمكن استخدام TextRender كلاس حيث ستجد به أيضا بعض الدوال التي يمكن استخدامها لقياس ارتفاع و عرض التكست و بعضا من هذه الدوال لا يحتاج الي تمرير الكلاس Graphics و بالتالي يمكن استخدامها من اي مكان داخل الكود سؤال: هل يوجد طرق أخري لقياس ابعاد التكست بدون استخدام الدوال التي كتبتها مايكروسوفت؟ نعم يوجد وذلك باستخدام شاشة الكمبيوتر او باستخدام صورة بالنسبة لسؤالك : لمادا استخدم Mid في MeasureString و استخدم Substring في DrawString هذا تسأل فيه صاحب الكود الأصلي لكني أعتقد انه يحاول تحديد بداية و نهاية الحروف المكونة للتكست و بشكل عام هذ ليس له تأثير كبير علي الكود أ RE: ممكن مساعدة في فهم هذا الكود Graphics - sniperjawadino - 18-08-16 ما قصرت أخي silverlight أفدتني كثيرا بشرحك في هذا المجال سأحاول التدقيق في هذه الأمثلة التي كتبتها لي حتى أفهمها جيدا شكراً لك يالغالي الله يبارك فيك ..تسلم و ربنا يخليك |