簡體   English   中英

如何以十六進制顏色在圖形對象上繪制實心圓?

[英]How do I draw a filled circle onto a graphics object in a hexadecimal colour?

我需要在Hex中給出的特定顏色的位圖上繪制一個圓圈。 “畫筆”類僅為特定顏色指定名稱。

Bitmap bitmap = new Bitmap(20, 20);
Graphics g = Graphics.FromImage(bitmap);
g.FillEllipse(Brushes.AliceBlue, 0, 0, 19, 19); //The input parameter is not a Hex
//g.FillEllipse(new Brush("#ff00ffff"), 0, 0, 19, 19); <<This is the kind of think I need.

有辦法做到這一點嗎?

確切的問題:我正在生成KML(谷歌地球),我正在生成許多具有不同十六進制顏色的行。 顏色是以數學方式生成的,我需要保持這種顏色,這樣我就能制作出我想要的顏色。 我需要為每條完全相同顏色的線生成一個PNG圖標。

ColorTranslator.FromHtml將為您提供相應的System.Drawing.Color:

using (Bitmap bitmap = new Bitmap(20, 20))
{
   using (Graphics g = Graphics.FromImage(bitmap))
   {
      using (Brush b = new SolidBrush(ColorTranslator.FromHtml("#ff00ffff")))
      {
         g.FillEllipse(b, 0, 0, 19, 19);
      }
   }
}

使用使用適當顏色構造的SolidBrush

例:

Color color = Color.FromArgb(0x00,0xff,0xff,0x00); // Channels: Alpha, Red, Green, Blue.
SolidBrush brush = new SolidBrush(color);
// Use this brush in your calls to FillElipse.

您可能必須手動解析顏色字符串。

string colorSpec = "#ff00ffff";
byte alpha = byte.Parse(colorSpec.Substring(1,2), System.Globalization.NumberStyles.HexNumber);
byte red = byte.Parse(colorSpec.Substring(3, 2),System.Globalization.NumberStyles.HexNumber);
byte green = byte.Parse(colorSpec.Substring(5, 2), System.Globalization.NumberStyles.HexNumber);
byte blue = byte.Parse(colorSpec.Substring(7, 2), System.Globalization.NumberStyles.HexNumber);
Color fillColor = Color.FromArgb(alpha, red, green, blue);

正如Aaronaught指出的那樣,如果您的ARGB按此順序排列,則FromARGB會出現一個超載,它接受一個整數中的所有組件:

int argb = int.Parse(colorSpec.Substring(1), System.Globalization.NumberStyles.HexNumber);
Color fillColor = Color.FromArgb(argb);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM