PDA

View Full Version : سوال: چگونه يك ليبل (Glow(Stroke دار داشته باشيم؟



newgoldenman
دوشنبه 01 مهر 1387, 20:31 عصر
سلام به همه ي دوستان و عزيزان برنامه نويس!
اونهايي كه با نرم افزارهاي گرافيكي كار كردن، ميدونن كه توي Photoshop بهش ميگن Stroke و يا اينكه توي Adobe Flash بهش ميگن Glow ! نميدونم معادل فارسيش چي ميشه، حاشيه، باريكه ي رنگ، ...!!

يك نمونه ي خيلي معروف كه همگي بارها ديديم، لوگوي برنامه نويس هست:

http://barnamenevis.org/forum/images/misc/logo42.gif
همينطور كه ميبينيد، منظور من دقيقاً همين رنگ سفيد هست كه دور لغت برنامه نويس قرار داره.

و اما سوال من!
آيا راهي وجود داره كه من يك Label داشته باشم كه دور متنش يك همچين حاشيه اي داشته باشم؟! كامپوننت خاص، كلاس خاص، ترفند يا شيوه اي خاص كه بتونم به جواب سوالم برسم. خيلي خيلي ممنونم از همگي دوستان:قلب:

(در حاشيه: آيا ميتونم Visual Studio 2008 نصب كنم، در حالي كه الان 2005 دارم استفاده ميكنم،وهيچ خللي در 2005 ايجاد نكنه؟!باز هم مرسي!)

Mahdi.Kiani
دوشنبه 01 مهر 1387, 21:08 عصر
سلام
برای سوال اول، اگر دات نت 2.0 می خو.اهید، پیشنهادم اینه که یک ClassLibrary ایجاد کنید. از کلاس Control ارث بری کنید و در رویداد Paint با Override کردن آن هر کاری که می خواهید بکنید!!! ( بسیار فراتر از اون چیزی که در ذهنتون است)..
اگر هم دان نت 3.0 به بعد که تکلیف معلومه و گفتن نداره... (wpf)

در مورد سوال دوم هم بله می شود.

Mahdi.Kiani
دوشنبه 01 مهر 1387, 21:45 عصر
این لینک را هم ببینید خوبه (http://www.codeproject.com/KB/vista/textonglass.aspx)

newgoldenman
سه شنبه 02 مهر 1387, 11:22 صبح
سلام
برای سوال اول، اگر دات نت 2.0 می خو.اهید، پیشنهادم اینه که یک ClassLibrary ایجاد کنید. از کلاس Control ارث بری کنید و در رویداد Paint با Override کردن آن هر کاری که می خواهید بکنید!!! ( بسیار فراتر از اون چیزی که در ذهنتون است)..


بسيار ممنون و متشكرم از توجه شما و پاسخ ارزندتون.
اون لينك كه فرمودين، روش كار ميكنم! مرسي.
و اما در مورد رويداد Paint ، ميتونم خواهش كنم بيشتر در مورد نحوه ي انجام اينكار منو راهنمايي كنيد؟ مثلاً بگيد كه چطور و با چه شيوه و الگوريتمي اين كار رو عملي كنم.

باز هم از توجهتون ممنون و سپاسگذارم:خجالت:

Mahdi.Kiani
سه شنبه 02 مهر 1387, 11:56 صبح
سلام
چرا که نه برادر..
ببینید شما می توانید با ارث بری یک کلاس از کلاس control اقدام به ایجاد کنترل کاملا سفارشی خود بکنید.
بیش از 90 در صد کار بر روی رویداد Paint می باشد که با override کردن آن، می توانید به کنترل خود شکل دهید و آن چیزی را که می خواهید پیاده سازی کنید.. توسط آرگومان e این متد و شی Graphics و متد های مختلف اون ( DrawRectangle ، DrawString و ... )
علاوه بر این در فضای نام System.Drawing.Drawing2d کلاس هایی مانند GradientBrush ها و جود دارند که امکانات بیشتری را در اختیار شما قرار می دهند.
یک نمونه خیلی ساده براتون می فرستم.. توجه داشته باشید که کد آن بهینه نیست و صرفا جهت آگاهی شما نوشته شده..

همانطور که در عکس هم می بینید، دو خاصیت جدید به کنترل اضافه شده که عملکردشون مشخصه...




http://i33.tinypic.com/25zp9uu.jpg

newgoldenman
سه شنبه 02 مهر 1387, 19:04 عصر
باز هم سلام و درود بر شما دوست عزيز و بزرگوارم.
از لطف و توجه و نيز پاسخ ارزنده و ارزشمند شما در يافتن راه حلي براي مسئله خود بي نهايت سپاسگذارم.
با آرزوي قبولي طاعات و عباات شما در اين شب عزيز.
بدرود:قلب:

newgoldenman
جمعه 05 مهر 1387, 16:00 عصر
با تشكر از دوست عزيز و بزرگوارم آقاي كياني، الان داشتم توي تاپيك ارزنده ي نمونه برنامه هاي سي شارپ،به اين برنامه برخوردم كه دقيقاً جواب سوال بنده هست.
http://barnamenevis.org/forum/showpost.php?p=590855&postcount=123
http://barnamenevis.org/forum/attachment.php?attachmentid=22966&stc=1&thumb=1&d=1220948906

از دوست عزيزي كه اين برنامه رو براي استفاده همگان قرار داده نيز بسيار تشكر ميكنم.