Tôi muốn tạo một System.Drawing.Colortừ một giá trị giống như #FF00FFhoặc FF00FFkhô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.Colortừ một giá trị giống như #FF00FFhoặc FF00FFkhô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 ToInt32chứ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.FromNamehoặ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.