WinRT: 解析顏色字串

來源:互聯網
上載者:User

字串轉換成顏色,這個在WPF中可以一句話搞定的事情:

var color = (Color)ColorConverter.ConvertFromString("#FF293C69");

 

但是在WinRT中沒有相應的方法支援,唯一一個初始化Color的方法就是Windows.UI.ColorHelper類型的FromArgs方法,參數是4個byte。

 

因此寫了個方法,把顏色字串直接轉換成SolidColorBrush。該方法可以解析的字串對#和Alpha值得存在沒有要求。也就是說以下值都可以被正確解析(沒帶Alpha當然預設Alpha為FF):

#FF293C69 #293C69 FF293C69 293C69

 

代碼:

//+ using System.Globalization;

//+ using Windows.UI;

SolidColorBrush GetSolidColorBrush(string color)

{

    if (color == null)

        throw new ArgumentNullException("color");

 

    try

    {

        //去掉#

        if (color.StartsWith("#"))

            color = color.Substring(1);

 

        //將字串解析成完整的int

        byte a, r, g, b;

        int integer = Int32.Parse(color, NumberStyles.HexNumber);

 

        //判斷或解析Alpha

        if (color.Length == 6)

            a = 255;

        else

            a = (byte)((integer >> 24) & 255);

 

        //解析RGB

        r = (byte)((integer >> 16) & 255);

        g = (byte)((integer >> 8) & 255);

        b = (byte)(integer & 255);

 

        return new SolidColorBrush(ColorHelper.FromArgb(a, r, g, b));

    }

    catch (Exception ex)

    {

        throw new FormatException("無法解析的顏色", ex);

    }

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.