Tôi muốn tạo một System.Drawing.Color
từ một giá trị như #FF00FF
hoặc FF00FF
mà không cần phải viết mã cho điều đó. Có bất kỳ trình phân tích cú pháp tích hợp .NET nào cho điều đó không?Cách tạo System.Drawing.Color từ chuỗi RGB thập lục phân của nó?
Trả lời
ColorTranslator.FromHtml("#FF00FF");
Khá dễ dàng khi bạn sử dụng Convert-Class. Chức năng ToInt32
có tình trạng quá tải với một tham số thứ hai đại diện cho các cơ sở chuỗi là trong
using System.Drawing
Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
Sử dụng các lớp ColorConverter:.
var converter = System.ComponentModel.TypeDescriptor.GetConverter(typeof(Color));
color = converter.ConvertFromString("#FF00FF");
này cũng có thể chuyển đổi từ tiêu chuẩn đặt tên màu sắc ví dụ ConvertFromString ("Blue")
Xem here để thảo luận về các cơ chế chuyển đổi kiểu .NET chuẩn.
Bạn có thể sử dụng phương pháp tĩnh System.Drawing.ColorTranslator FromHtml.
sử dụng:
System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
Phương pháp FROMNAME làm việc cho tôi
System.Drawing.Color.FromName("#FF00FF");
Nếu màu sắc mà bạn muốn sử dụng là một hằng số, trong C# sử dụng System.Drawing.Color.FromArgb (0xFF00FF)
. Đó là hơi nhanh hơn System.Drawing.Color.FromName
hoặc System.Drawing.Color.FromHtml
, vì việc phân tích cú pháp từ chuỗi thành số nguyên được thực hiện tại thời gian biên dịch chứ không phải lúc chạy.
Tính năng này không hoạt động đối với .NET 3.5 – UNeverNo