Làm thế nào tôi có thể kiểm tra xem hai cấu trúc System.Drawing.Color có cùng màu với độ sâu màu 16 bit (hay thường dựa trên giá trị của Screen.PrimaryScreen.BitsPerPixel)?Làm thế nào để kiểm tra xem hai cấu trúc System.Drawing.Color có biểu thị cùng màu với độ sâu màu 16 bit không?
Giả sử tôi đặt Form.TransparencyKey thành Value1 (thuộc loại màu), tôi muốn kiểm tra khi người dùng chọn màu nền mới cho biểu mẫu (Value2), tôi không đặt toàn bộ biểu mẫu trong suốt.
Trên màn hình sâu 32bit màu Tôi chỉ đơn giản là so sánh hai giá trị:
if (Value1 == Value2)
Tuy nhiên, điều này không hoạt động trên màn hình sâu 16bit màu, như các giá trị màu hơn cho Value2 sẽ đại diện cho cùng một màu 16bit thực như Value1, khi tôi phát hiện ra một cách khó khăn.
Chỉ cần hiểu, nếu bạn có thể cho tôi biết thêm chi tiết về lý do tại sao bạn nhân giá trị màu đỏ với 32, giá trị màu xanh lá cây với 64 và giá trị màu xanh với 32? Cảm ơn – AnAurelian
Với cùng một lý do như câu trả lời của nobugz: màu RGB 16 bit (đúng) trong Windows được xây dựng từ 5, 6 và 5 bit (2 đến sức mạnh của 5 là 32, 2 với công suất 6 là 64). Do đó, nếu bạn chia các byte màu đỏ và xanh ban đầu cho 256 và nhân chúng với 32, bạn sẽ nhận được biểu diễn 5 bit được làm tròn xuống. Điều tương tự cũng áp dụng cho 6 bit của Green. – Webleeuw