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

اكتب كلمة بلون وأحد حروفها بلون اخر

مغلق
بدأه koao في 13 ديسمبر 2005 · 2 رد · 624 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اولا اتمنى ان المشرفين ما يزعلون اني وضعت موضوع منفصل لحل تساؤل

قد كتبته قبل فتره في موضوع اخر

والحمدلله الذي دلني على موضوع كتبه اخوي SOLO.NET يتكلم عن الـ GDI

ذكر فيه شئ عن الـ Blend ولكنه لم يعطي مثال ... فالشكر لله ثم له

وللتاريخ اول مره ابحث في مكتبة الـ MSDN واخرج بنتيجه مفهومة على الاقل لي شخصيا

عموما حبيت اشارككم الافكار ومن له تعليق فمرحبا به

في المكتبة كان هناك مثال لرسم شكل بيضاوي بلونين متدرجين يكون احد الالوان بالاطراف واللون الاخر بالوسط

واليكم الشرح اولا يجب استدعاء فضاء الاسماء الخاص بالرسم الثنائي الابعاد

Imports System.Drawing.Drawing2D

ثم نعرف كائن للرسم ثم نسند له الكائن الذي سيتم عليه الرسم وفي حالتنا هو النموذج

Dim gr As Graphics = Me.CreateGraphics

ثم نعرف نقطة بداية ونهاية رسم الشكل البيضاوي ونسند لها قيم المحور السيني والصادي

Dim startPoint2 As New Point(20, 15)
Dim endPoint2 As New Point(140, 15)

وللكلاس Blend عنصرين اساسيين الاول هو العوامل Factors والثاني المواقع Positions

لذا نعرف مصفوفه من نوع Single تمثل العوامل ونسند لها القيم التاليه

Dim myFactors As Single() = {0.2F, 0.4F, 0.8F, 0.8F, 0.4F, 0.2F}

هذه الارقام هي عباره عن نسبة مؤية من لون البداية والنهاية واللون المدمج .. وسبب التدرج من صغير الى كبير ثم

الى صغير ليكون هناك لون في وسط لون اخر

ثم نعرف مصفوفه من نوع Single تمثل المواقع ونسند لها القيم التاليه

Dim myPositions As Single() = {0.0F, 0.2F, 0.4F, 0.6F, 0.8F, 1.0F}

يجب ان يبدا بـ 0.0F وينتهي بـ 1.0F وتمثل المسافه الكلية من للرسم وكما اتفقنا انها كالنسبة المؤية

ثم نعرف كائن من الكلاس Blend لكي نتمكن من التعامل مع محتوياته

Dim myBlend As New Blend

ثم نربطه بالعوامل والمواقع التي انشأناها لينطلق على اساسها

myBlend.Factors = myFactors
myBlend.Positions = myPositions

ثم ننشئ فرشة رسم وتاخذ المعاملات التاليه: نقطة البداية والنهاية ولونين

Dim lgBrush2 As New LinearGradientBrush(startPoint2, endPoint2, Color.Blue, Color.Red)

ثم نربط فرشة الرسم بعملية Blend

lgBrush2.Blend = myBlend

ثم نعرف مستطيل الرسم ونبين موقعه السيني والصادي وطوله وعرضه

Dim ellipseRect2 As New Rectangle(20, 15, 120, 80)

ثم نبدأ رسم الشكل البيضاوي ونبين فرشة الرسم ومستطيل الرسم

gr.FillEllipse(lgBrush2, ellipseRect2)

وهكذا تكون رسمت الشكل البيضاوي بلون يتوسطه لون اخر بتدرج ... فكيف الغي التدرج

لاحظت انك لو غيرت قيم العوامل من

{0.2F, 0.4F, 0.8F, 0.8F, 0.4F, 0.2F}

الى {0.1F, -0.1F, 0.0F, 0.0F, -0.1F, -0.1F -}

فسيلتغي التدريج باللون

واذا غيرت الارقام اليسرى السالبه الى موجبة فسيكون الثلث الايمن للشكل البيضاوي بلون والباقي بلون اخر والعكس صحيح

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

Dim gr As Graphics
    Dim myFont As New Font("Arial", 140, FontStyle.Bold)
    Dim myBlend As New Blend
    Dim t As String
t = "باب"
gr = Me.CreateGraphics
        Dim size As SizeF
        size = gr.MeasureString(t, myFont)
        Dim startPoint2 As New Point(50, 50)
        Dim endPoint2 As New Point(50 + size.Width, 50)
        Dim myFactors As Single() = {-0.1F, -0.1F, 0.0F, 0.0F, -0.1F, -0.1F}
        Dim myPositions As Single() = {0.0F, 0.55F, 0.55F, 0.66F, 0.66F, 1.0F}
        myBlend.Factors = myFactors
        myBlend.Positions = myPositions
        Dim lgBrush2 As New LinearGradientBrush(startPoint2, endPoint2, Color.Red, Color.Black)
        lgBrush2.Blend = myBlend
        gr.DrawString(t, myFont, lgBrush2, 50, 20)

والمثال بالمرفقات

وارجو منكم اثراء الموضوع باقتراحاتكم وشرحكم الذي لا نستغني عنه

Word_w_2Color.zip

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#2

السلام عليكم

اعجبنى اصرارك وبحثك عن الحل والحمدلله اذ وفقك للوصول الى ما تصبو اليه

استمر هكذا وستجد ان كل الصعاب تهون امامك

بالتوفيق

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#3

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

اخوي واستاذي SOLO.NET شرفت موضوعي بمرورك الكريم واشكر لك كلامك المشجع

ولله اعزو تعلمي لتقنية الـ GDI ثم لك ولاستاذي رغيد الطيب و seahmed

فاسال الله ان يجزيكم عني كل الخير

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

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

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

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

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

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

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