Làm thế nào để tạo một System.Drawing.Color từ chuỗi RGB thập lục phân của nó?


84

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:



62

Bạn có thể sử dụng phương thức tĩnh System.Drawing.ColorTranslator FromHtml.

sử dụng:

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");

18

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));

9

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.


1

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.


0

Phương thức FromName phù hợp với tôi

System.Drawing.Color.FromName("#FF00FF");
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.