[Silverlight]16进制颜色转ARGB及Color转Int32
- 16進(jìn)制色字符串轉(zhuǎn)ARGB
做Web的都喜歡用16進(jìn)制字符串標(biāo)識(shí)顏色,比如“#F5F5F5”這類的,自然這個(gè)到了Silverlight/WPF中就要用ARGB表示:“#FFF5F5F5”(前兩位標(biāo)識(shí)Alpha,即透明度)。這在XAML中沒有任何問題,可是如果我們想在代碼中設(shè)置顏色呢,或者是從XML中讀取的相關(guān)值呢?
必然會(huì)報(bào)錯(cuò)嘛,至少我是不知道SL或者WPF有沒有公開這個(gè)Converter,反正俺是無能為力
這里提供一個(gè)代碼片段,幫助我們將16進(jìn)制字符串轉(zhuǎn)為ARGB色
public static Color ToColor(this string colorName) {if (colorName.StartsWith("#"))colorName = colorName.Replace("#", string.Empty);int v = int.Parse(colorName, System.Globalization.NumberStyles.HexNumber);return new Color() {A = Convert.ToByte((v >> 24) & 255),R = Convert.ToByte((v >> 16) & 255),G = Convert.ToByte((v >> 8) & 255),B = Convert.ToByte((v >> 0) & 255)}; }這里我做成了擴(kuò)展方法,之后這樣使用
?
Rectangle rectangle = new Rectangle(); rectangle.Fill = new SolidColorBrush("#FFF5F5F5".ToColor());自然就沒問題了
- Color轉(zhuǎn)Int32
看到這里你可能要問了,Color轉(zhuǎn)int有啥用啊?其實(shí)如果你在用一些現(xiàn)有的圖像庫的時(shí)候,它們經(jīng)常將Color表現(xiàn)為一個(gè)int值。在這種情況下,ARGB值是通過其AARRGGBB的byte的順序用32位int表現(xiàn)的。這里我們可以做如下轉(zhuǎn)換:
public static int ToArgb(this Color color) {int argb = color.A << 24;argb += color.R << 16;argb += color.G << 8;argb += color.B;return argb; }以下是這兩個(gè)方法的一個(gè)綜合應(yīng)用:
Rectangle rectangle = new Rectangle(); SolidColorBrush scb = new SolidColorBrush(); scb.Color = "#FFF5F5F5".ToColor(); rectangle.Fill = scb; MessageBox.Show(scb.Color.ToArgb().ToString());猜猜MessageBox Show出來的值是什么?
OK,散會(huì):)
轉(zhuǎn)載于:https://www.cnblogs.com/024hi/archive/2009/09/28/1576040.html
總結(jié)
以上是生活随笔為你收集整理的[Silverlight]16进制颜色转ARGB及Color转Int32的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android保存设置的Preferen
- 下一篇: 最好用的100个黑科技网站