日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Silverlight]16进制颜色转ARGB及Color转Int32

發(fā)布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Silverlight]16进制颜色转ARGB及Color转Int32 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 16進制色字符串轉(zhuǎn)ARGB

做Web的都喜歡用16進制字符串標(biāo)識顏色,比如“#F5F5F5”這類的,自然這個到了Silverlight/WPF中就要用ARGB表示:“#FFF5F5F5”(前兩位標(biāo)識Alpha,即透明度)。這在XAML中沒有任何問題,可是如果我們想在代碼中設(shè)置顏色呢,或者是從XML中讀取的相關(guān)值呢?

必然會報錯嘛,至少我是不知道SL或者WPF有沒有公開這個Converter,反正俺是無能為力

這里提供一個代碼片段,幫助我們將16進制字符串轉(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)}; }

這里我做成了擴展方法,之后這樣使用

?

Rectangle rectangle = new Rectangle(); rectangle.Fill = new SolidColorBrush("#FFF5F5F5".ToColor());

自然就沒問題了

  • Color轉(zhuǎn)Int32

看到這里你可能要問了,Color轉(zhuǎn)int有啥用啊?其實如果你在用一些現(xiàn)有的圖像庫的時候,它們經(jīng)常將Color表現(xiàn)為一個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; }

以下是這兩個方法的一個綜合應(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,散會:)

轉(zhuǎn)載于:https://www.cnblogs.com/024hi/archive/2009/09/28/1576040.html

總結(jié)

以上是生活随笔為你收集整理的[Silverlight]16进制颜色转ARGB及Color转Int32的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。