string color = @"Color [A=255, R=245, G=243, B=244]";
Color pixelColor = bitmap.GetPixel(x, y);
Color newColor = Color.FromArgb(color);
bitmap.SetPixel(x, y, newColor);
如何轉換顏色字符串,以便將其用作Color對象?如何將顏色字符串轉換爲顏色對象?
string color = @"Color [A=255, R=245, G=243, B=244]";
Color pixelColor = bitmap.GetPixel(x, y);
Color newColor = Color.FromArgb(color);
bitmap.SetPixel(x, y, newColor);
如何轉換顏色字符串,以便將其用作Color對象?如何將顏色字符串轉換爲顏色對象?
的Color
類只能通過兩種方式創建自定義顏色對象:
KnownColor
枚舉)表示Windows主題元素或系統顏色還有什麼,你需要自己解析數據並提取顏色的A,R,G和B組件。在你的情況下,你可能想要提取[]
內部的內容,將它們拆分爲,
,然後使用Int32.Parse()
來讀取各個值。假設字符串總是採用相同的格式,如下所示:
var elements = color.Substring(7, color.Length - 8)
.Split(',')
.Select(x => x.Split('='))
.ToDictionary(x => x[0].Trim(), x => x[1].Trim());
var components = new int[]
{
int.Parse(elements["A"]),
int.Parse(elements["R"]),
int.Parse(elements["G"]),
int.Parse(elements["B"])
};
var newColor = Color.FromArgb(components[0], components[1], components[2], components[3]);
當然,有適當的錯誤檢查等。
同意@邁克爾Edenfield,只是提出一個小的改進自己的代碼:
var elements = color.Substring(7, color.Length - 8)
.Split(',')
.Select(x => x.Split('='))
.ToDictionary(x => x[0].Trim(), x => int.Parse(x[1]));
var newColor = Color.FromArgb(elements["A"], elements["R"], elements["G"], elements["B"]);
您可以使用String.Substring
和String.IndexOf
方法也提取您的信息。只要您的數據具有某種可預測的格式,它就會工作。
char[] trimChars = new char[] { ',', ' ' };
byte A, R, G, B;
string color = @"Color [A=255, R=245, G=243, B=244]";
byte.TryParse((color.Substring(color.IndexOf('A') + 2, 3)).Trim(trimChars), out A);
byte.TryParse((color.Substring(color.IndexOf('R') + 2, 3)).Trim(trimChars), out R);
byte.TryParse((color.Substring(color.IndexOf('G') + 2, 3)).Trim(trimChars), out G);
byte.TryParse((color.Substring(color.IndexOf('B') + 2, 3)).Trim(trimChars), out B);
Color newColor = Color.FromArgb(A,R,G,B);