Tôi muốn tạo một System.Drawing.Color
từ một giá trị giống như #FF00FF
hoặc FF00FF
không cần viết mã cho giá trị đó. Có bất kỳ trình phân tích cú pháp tích hợp .NET nào cho việc đó không?
Tôi muốn tạo một System.Drawing.Color
từ một giá trị giống như #FF00FF
hoặc FF00FF
không cần viết mã cho giá trị đó. Có bất kỳ trình phân tích cú pháp tích hợp .NET nào cho việc đó không?
Câu trả lời:
ColorTranslator.FromHtml("#FF00FF");
Nó khá dễ dàng khi bạn sử dụng Convert-Class . Các ToInt32
chức năng 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 lớp ColorConverter :
var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
color = converter.ConvertFromString( "#FF00FF" );
Điều này cũng có thể chuyển đổi từ các màu được đặt tên tiêu chuẩn, ví dụ: ConvertFromString ("Blue")
Xem ở đây để thảo luận về các cơ chế chuyển đổi kiểu .NET tiêu chuẩn.
Nếu màu bạn muốn sử dụng là một hằng số, hãy sử dụng C # System.Drawing.Color.FromArgb (0xFF00FF)
. Điều đó nhanh hơn một chút so với System.Drawing.Color.FromName
hoặc System.Drawing.Color.FromHtml
, vì quá trình phân tích cú pháp từ chuỗi thành số nguyên được thực hiện tại thời điểm biên dịch thay vì thời gian chạy.