2009-11-19 67 views

Trả lời

32
string hexValue = "#000000"; // You do need the hash 
Color colour = System.Drawing.ColorTranslator.FromHtml(hexValue); // Yippee 

Edit: Bạn thực sự cần băm, hoặc giá trị alpha sẽ không được tính đến. Rất tiếc!

+1

Câu trả lời hay + điểm thưởng cho "Yippee" –

+0

Đã thay đổi nếu so sánh (màu == Đen) của tôi vì chúng là hai đối tượng khác nhau, vì vậy điều kiện sẽ không bao giờ đúng. Giữ bình luận yippee trong - chỉ dành cho bạn! – GenericTypeTea

+0

Có. HASH là cần thiết. Nếu không nó sẽ ném một lỗi – Shyju

3

var my col = Color.FromArgb (int x);

lưu ý bạn cần phải xác định một giá trị alpha cũng (có thể là bạn muốn FF cho điều này, tức là hoàn toàn mờ đục, vì vậy thêm 0xFF000000 với giá trị màu hex)

+0

+1 Ông có thể sử dụng Int32.Parse để biến một chuỗi hex thành một int, chỉ cần thả #. –

0
Color.FromArgb(Convert.ToInt32(str.Substring(1), 16)); 
+0

điều này sẽ không cho giá trị aplha bằng 0 trong suốt không? –

+0

Vâng, có, nếu alpha được hỗ trợ. Bạn sẽ phải sử dụng # FF123456 nếu bạn muốn màu không trong suốt hoặc thêm 0xff000000 vào kết quả chuyển đổi. – EricSchaefer

1

Bạn có thể thay đổi các giá trị để bắt đầu với FF? Ví dụ. FFFFFFFF = màu trắng. Điều này là để thêm giá trị alpha vào đầu.

Nếu có, chỉ cần phân tích cú pháp giá trị bằng System.Drawing.Color.FromArgb. Phải mất int trong đó 8 bit đầu tiên là giá trị alpha. 255 không rõ ràng.

Để chuyển đổi chuỗi của bạn thành một int, sử dụng Int32.Parse. Ví dụ.

String HexColourValue = "FABFAB"; 
System.Drawing.Color colour = System.Drawing.Color.FromArgb(Int32.Parse("FF"+HexColourValue, 
           System.Globalization.NumberStyles.HexNumber)); 

Đảm bảo rằng HexColourValue không có '#' trong đó.

Các vấn đề liên quan