コミュニティでの活動の履歴として、自身(Orator/魔界の仮面弁士)が掲示板・Mailing List・Newsgroup等へ発言した内容の中で、再利用できそうな物を拾い出して、掲載しています。

« 2005年04月 | Main | 2005年10月 »
[VB.NET] 16進表記→色名表記へ変換 / 2005年06月30日(木)

「#FF0000 → Red」のように、HTMLの16進表記を、色名表記に変換するサンプルです。


[06/30/2005]VB初心者友の会(超初心者専用Q&A掲示板)

これ自体は.NET Compact Framework用のサンプルですが、.NET Frameworkでも利用可能です。

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
	Me.Button1.Text = "変換"
	Me.TextBox1.Text = "#789"
End Sub

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
	Me.Text = ToColorName(Me.TextBox1.Text)
End Sub

'『Imports System.Drawing, System.Reflection』が必要です。
Public Shared Function ToColorName(ByVal htmlColor As String) As String
	Dim colorName As String = htmlColor
	Dim C As Color
	Dim _htmlColor As Color = FromHtmlColor(htmlColor)
	For Each P As PropertyInfo In GetType(Color).GetProperties(BindingFlags.IgnoreCase Or BindingFlags.GetProperty Or BindingFlags.Static Or BindingFlags.Public)
		'If _htmlColor.Equals(P.GetValue(C, Nothing)) Then
		If _htmlColor.ToArgb() = DirectCast(P.GetValue(C, Nothing), Color).ToArgb() Then
			colorName = P.Name
			Exit For
		End If
	Next
	Return colorName
End Function

Private Shared Function FromHtmlColor(ByVal htmlColor As String) As Color
	Dim _color As Color = Color.Empty
	If Len(htmlColor) > 0 Then
		If (htmlColor.Chars(0) = "#"c) AndAlso ((htmlColor.Length = 7) OrElse (htmlColor.Length = 4)) Then
			If htmlColor.Length = 7 Then
				_color = Color.FromArgb(Convert.ToInt32(htmlColor.Substring(1, 2), 16), Convert.ToInt32(htmlColor.Substring(3, 2), 16), Convert.ToInt32(htmlColor.Substring(5, 2), 16))
			Else
				_color = Color.FromArgb(Convert.ToInt32(New String(htmlColor.Chars(1), 2), 16), Convert.ToInt32(New String(htmlColor.Chars(2), 2), 16), Convert.ToInt32(New String(htmlColor.Chars(3), 2), 16))
			End If
		End If
	End If
	Return _color
End Function

 
Posted at 21:18 / .NET / この記事のURL
コメント(0)
P R

Microsoft Most Valuable Professional, Visual Developer - Visual BasicMSMVP for Visual Basic


Global Media Online INC.