C# 如何将ColorDialog颜色转换为KML颜色格式

C# 如何将ColorDialog颜色转换为KML颜色格式,c#,visual-studio-2010,kml,kmz,colordialog,C#,Visual Studio 2010,Kml,Kmz,Colordialog,我正在寻找一种方法,将C#中ColorDialog对话框返回的颜色代码转换为KML/KMZ文件格式使用的颜色格式。任何信息都将不胜感激 经过几个小时的研究,我已经回答了自己的问题 Kml使用8位十六进制颜色格式。红色的传统十六进制格式看起来像#FF0000。在Kml中,红色看起来像FF0000FF。前两位数字表示不透明度(alpha)。颜色格式为AABBGGRR。我正在寻找一种方法来设置颜色和不透明度,并将其返回到一个字符串中,放置在KML的属性中。这是我的解决办法 string color s

我正在寻找一种方法,将C#中ColorDialog对话框返回的颜色代码转换为KML/KMZ文件格式使用的颜色格式。任何信息都将不胜感激

经过几个小时的研究,我已经回答了自己的问题

Kml使用8位十六进制颜色格式。红色的传统十六进制格式看起来像#FF0000。在Kml中,红色看起来像FF0000FF。前两位数字表示不透明度(alpha)。颜色格式为AABBGGRR。我正在寻找一种方法来设置颜色和不透明度,并将其返回到一个字符串中,放置在KML的属性中。这是我的解决办法

string color
string polyColor;
int opacity;
decimal percentOpacity;
string opacityString;

//This allows the user to set the color with a colorDialog adding the chosen color to a string in HEX (without opacity (BBGGRR))
private void btnColor_Click(object sender, EventArgs e)
{
    if (colorDialog1.ShowDialog() == DialogResult.OK)
    {
        btnColor.BackColor = colorDialog1.Color;
        Color clr = colorDialog1.Color;
        color = String.Format("{0:X2}{1:X2}{2:X2}", clr.B, clr.G, clr.R);
    }
}

//This method takes the Opacity (0% - 100%) set by a textbox and gets the HEX value. Then adds Opacity to Color and adds it to a string.
private void PolyColor()
{
    percentOpacity = ((Convert.ToDecimal(txtOpacity.Text) / 100) * 255);
    percentOpacity = Math.Floor(percentOpacity);  //rounds down
    opacity = Convert.ToInt32(percentOpacity);
    opacityString = opacity.ToString("x");
    polyColor = opacityString + color;

}

我正在寻找获取颜色值的更有效方法这里是一个在线颜色转换器。 前两位是不透明度FF->100% 对于从HTML到KML的颜色,RGB从第一个反转到最后一个。

///从HTML颜色到KML颜色的转换
/// 
/// 
/// 
公共字符串颜色\u HTML\u KML(字符串htmlColor)
{

列表结果=新列表(Regex.Split(htmlColor,@)(?经研究,我发现KML使用了一个8位数长的颜色模式。前2位是不透明度,后6位是十六进制。表达式的顺序是aabbggrr,其中aa=alpha(00到ff);bb=蓝色(00到ff);gg=绿色(00到ff);rr=红色(00到ff)。
/// Convertion from HTML color to KML Color
/// </summary>
/// <param name="htmlColor"></param>
/// <returns></returns>
public string convertColors_HTML_KML(string htmlColor)
{
    List<string> result = new List<string>(Regex.Split(htmlColor, @"(?<=\G.{2})", RegexOptions.Singleline));
    return "FF" + result[2] + result[1] + result[0];
}