PDA

View Full Version : چطور رشته را به رنگ تبدیل کنم ؟



alih988
دوشنبه 15 بهمن 1386, 09:52 صبح
به نام خدا
سلام و عرض ادب.
میخواستم بدونم چطور میشه یک رنگ را به رشته تبدیل کرد ؟
احتمالا از خاصیت tostring . تا اینجا مشکلی نیست ، ولی میخواهم دوباره رشته را به رنگ تبدیل کنم ! لطفا راهنمایی کنید!

__H2__
دوشنبه 15 بهمن 1386, 10:27 صبح
سلام
System.Drawing.Color.FromName

maryam_vb
دوشنبه 15 بهمن 1386, 12:46 عصر
فقط برای اختصاص رنگ به کنترل دیگه باید رشته بدست اومده رو از کارکتر 8 تا 1-طول رشته جدا کنید.

alih988
دوشنبه 15 بهمن 1386, 19:27 عصر
ممنون از پاسخ هایتون ، ولی به نتیجه نرسیدم،

پاسخ جناب H2 خیلی یاری دهنده بود ، ولی انگار اصلا یه جای دیگه کارم میلنگه!

راستش من میخوام رنگ پس زمینه فرم رو ذخیره کنم ( به صورت رشته ) حالا هرطور که شده فقط رشته باید باشه ، بعد هم هنگام بازیابی ، میخوام رشته رو به رنگ تبدیل کنم و به بک گراند فرمم اختصاص بدم ،

لطفا راهنمایی کنید که چطور رنگ را به رشته و رشته را به رنگ تبدیل کنم!

MohsenPS
دوشنبه 15 بهمن 1386, 20:07 عصر
ظا هرا با Color.FromName فقط امکان استفاده KnownColors وجود داره :


'Color 2 String:
Dim StringColor As String = (YourColor.ToKnownColor).ToString

'String 2 Color:
Dim YourColor As Color = Color.FromName(StringColor)

alih988
دوشنبه 15 بهمن 1386, 21:26 عصر
آقا محسن ممنون از راهنماییت ، ولی با این روش فقط تعداد بسیار محدودی رنگ رو میشه استفاده کرد و در بسیاری از موراد دستور شما مقدار 0 رو بر می گردونه ، من با استفاده از colordialog به کاربر اجازه انتخاب هر رنگی را می دهم ، و می خواهم همان رنگ انتخاب شده را بازیابی کنم!

MohsenPS
دوشنبه 15 بهمن 1386, 22:37 عصر
روش زیر البته زیاد قشنگ نیست ، اما فکر کنم کار شما رو راه بندازه :
'Color 2 String:
Dim StringColor As String = "_" + CStr(YourColor.A) + "_" + CStr(YourColor.R) + "_" + CStr(YourColor.G) + "_" + CStr(YourColor.B)

'String 2 Color:
Dim RGBString As String() = StringColor.Split("_")
Dim YourColor As Color = Color.FromArgb(CByte(RGBString(1)), CByte(RGBString(2)), CByte(RGBString(3)), CByte(RGBString(4)))

__H2__
چهارشنبه 17 بهمن 1386, 09:36 صبح
سلام
FromName نام های انگلیسی رنگ ها را تبدیل میکند، مثل red یا blue
اگرمیخواهید رنگ را سریالز کنید، بهترین راه که تمام طیف را پوشش میدهد و خیلی ساده است، تبدیل به عدد است و کمترین بار پردازشی را دارد.

همانطور که میدانید هر رنگ یک کد عددی منحصر به فرد دارد.
برای تبدیل به Integer از ToArgb و برای معکوس هم از FromArgb استفاده کنید.
چون در ذات هم رنگ ها به صورت عدد نگاه داشته میشوند.


Dim c As System.Drawing.Color
c = System.Drawing.Color.FromName("red")
c = System.Drawing.Color.Red

'Sample
Dim s As String = CStr(c.ToArgb)
c = System.Drawing.Color.FromArgb(CInt(s))

دو خط آخر نمونه کد تبدیلی به String هستند.