我正在寻找一种将 C# 中 ColorDialog Box 返回的颜色代码转换为 KML/KMZ 文件格式使用的颜色格式的方法。任何信息,将不胜感激!!
问问题
4522 次
2 回答
2
经过数小时的研究,我已经回答了我自己的问题。
Kml 使用 8 位 HEX 颜色格式。红色的传统十六进制格式看起来像#FF0000。在 Kml 中,红色看起来像这样 FF0000FF。前 2 位数字用于不透明度(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;
}
我愿意寻找更有效的方法来获取颜色值
于 2013-09-20T12:45:19.857 回答
0
这是一个在线颜色转换器。 http://www.zonums.com/gmaps/kml_color/ 前两个数字是不透明度 FF -> 100% 对于从 HTML 到 KML RGB 的颜色从第一个到最后一个反转。
/// 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];
}
于 2020-01-09T09:41:07.793 回答