PDA

View Full Version : تبدیل رشته به رنگ



rezaei manesh
یک شنبه 06 اسفند 1385, 09:43 صبح
سلام
چطور می شه یه رشته مثل black رو به رنگ تبدیل کنم همین طوری نمی شه
آیا روش خاصی داره

programmermp
یک شنبه 06 اسفند 1385, 10:45 صبح
سلام

حامد جان کد های زیر رو من تست کردم جواب داده




Label1.BackColor = Color.FromName("black")

rezaei manesh
یک شنبه 06 اسفند 1385, 16:29 عصر
سلام
با تشکرات فراوان
درسته کد بالای شما خلیی خوب کارشو می کنه اما مقداری که تویه دیتا بیس هست همیشه به صورت نام نیست مثلا گاهی ممکن به این شکل باشه


Color [A=255, R=10, G=10, B=10]

که البته می توان با کد زیر اونو پیدا کرد
Color.FromArgb
اما مجبور می شیم اول تشخیص بدیم که نام استاندارد هست یا سفارشی و بعد از متد خودش استفاده کنیم می خوام ببنیم متدی نداری که همون چیزی رو که تو دیتابیس هست رو به متد بدیم رنگ رو برگردونه؟!

Behrouz_Rad
یک شنبه 06 اسفند 1385, 17:11 عصر
فرمت های سفارشی رو اگر میخوای توسط متدها قابل شناسایی باشن، باید به نوع ورودی اون متدها تبدیل کنی. تابع تبدیل باید توسط خودت نوشته بشه.

موفق باشید.

rezaei manesh
یک شنبه 06 اسفند 1385, 17:15 عصر
بسیار خوب
اما آیا همون دو نوع فقط امکان دارد که در دیتابیس ذخیره شوند اگه همین دو نوع باشه و با همین فرمت ها می تونم یه تابع واسه این کار بنویسم اما مطمئن نیستم که مورد های دیگری نباشه؟
مثلا در مبنای 16و...

bidad
دوشنبه 07 اسفند 1385, 01:23 صبح
خب درسته ممکنه هگز هم باشه خیلی از جاها همینه!


Public Function Hex2Rgb(ByVal HexColor As String) As String
' HexColor = "#00FF1F"
Dim Red As String
Dim Green As String
Dim Blue As String
HexColor = Replace(HexColor, "#", "")
Red = Val("&H" & Mid(HexColor, 1, 2))
Green = Val("&H" & Mid(HexColor, 3, 2))
Blue = Val("&H" & Mid(HexColor, 5, 2))
Return RGB(Red, Green, Blue)
End Function

بقیشم یه همچین چیزایی میخواد دیگه!

rezaei manesh
دوشنبه 07 اسفند 1385, 08:32 صبح
ممنون از جوابتون خوب پس یعنی همین 3 نوع رو داریم؟
اگه این سه نوع باشه من یه تابع می نویسم که رو هر سه نوع کار کنه برای hex هم که Bidad تابع شو داد(مرسی)

rezaei manesh
دوشنبه 07 اسفند 1385, 16:58 عصر
این هم کد کامل برای تبدیل رنگ ذخیره شده در رشته به نوع color


Private Function Hex2Rgb(ByVal HexColor As String) As Color
' HexColor = "#00FF1F"
Dim Red As Int16
Dim Green As Int16
Dim Blue As Int16
HexColor = Replace(HexColor, "#", "")
Red = Val("&H" & Mid(HexColor, 1, 2))
Green = Val("&H" & Mid(HexColor, 3, 2))
Blue = Val("&H" & Mid(HexColor, 5, 2))
Return Color.FromArgb(Red, Green, Blue)
End Function
Public Function ReturnColor(ByVal Clr As Object) As Color
Try
If IsDBNull(Clr) Then
Return Color.Black
Else
If Clr.ToString.IndexOf("#") > -1 Then '"#00FF1F"
Return Hex2Rgb(Clr)
End If
If Clr.ToString.IndexOf("A") > -1 Then 'Color [A=255, R=10, G=10, B=10]
Dim A, R, G, B As Int16
Dim StrSplit() As String = Split(Clr, ",")
Dim A_() As String = Split(StrSplit(0), "=")
A = CInt(A_(1))
Dim R_() As String = Split(StrSplit(1), "=")
R = CInt(R_(1))
Dim G_() As String = Split(StrSplit(2), "=")
G = CInt(G_(1))
Dim B_() As String = Split(StrSplit(3), "=")
B = CInt(Left(B_(1), Len(B_(1) - 1)))
Return Color.FromArgb(A, R, G, B)
Else 'Color [Maroon]
Dim LctnSplit() As String = Split(Clr, "[")
Dim C() As String = Split(LctnSplit(1), "]")
ReturnColor = Color.FromName(C(0))
End If


End If
Catch ex As Exception
Return Color.Black
End Try
End Function

الان همین کار رو بایدبا فونت انجام بدم اما متدهای فونت رو نمی شه مقدار دهی کنم
مثلا این یه نمونه ذخیره شده در مقدار رشته هست


[Font: Name=Miriam Transparent, Size=14.25, Units=3, GdiCharSet=177, GdiVerticalFont=False]

اینو چکار کنم