thể trùng lặp:
given a background color, how to get a foreground color that make it readable on that background color?Tự động xác định fontcolor tối ưu bởi backgroundcolor
Tôi tự hỏi, nếu có bất kỳ thuật toán để xác định fontcolor tối ưu để có thể đọc bởi màu nền của nó.
Ví dụ: Tôi tạo biểu tượng có văn bản và màu động. Nếu màu sắc là kinda tối, tôi muốn nó để thiết lập các màu phông chữ trắng và nếu nó khá sáng, tôi muốn nó có màu đen (hoặc thậm chí có thể màu xám).
public DynamicIcon(String iconText, Color backgroundColor)
{
this.iconText = iconText;
this.backgroundColor = backgroundColor;
this.fontColor = determineFontColor(backgroundColor);
}
//This is what I need (Pseudocode):
private fontColor determineFontColor(Color backgroundColor)
{
if(backgroundColor == bright)
return Color.BLACK;
if(backgroundColor == dark)
return Color.WHITE;
//If possible:
if(backgroundColor == somethingInBetween)
return Color.GRAYISH;
}
Đáng tiếc là tôi không tìm thấy bất kỳ thuật toán nào như vậy, dù sao tôi chắc chắn rằng nó đã tồn tại. Bất cứ ai có bất kỳ ý tưởng?
cảm ơn, ymene
cảm ơn bạn đã chia sẻ ý tưởng của mình. Tôi sẽ thử nó. Có thể đủ tốt cho tôi. – crusam
rgb (191,87,218) là một màu tím khá OSX sử dụng cho màu nền danh sách lựa chọn (chúng sử dụng màu trắng cho màu nền trước văn bản.) 191 + 87 + 218 = 496, vì vậy thuật toán này sẽ xác định nó là "ánh sáng" . Một giải pháp khác mà tôi có, là để chuyển đổi sang HSB và sau đó sử dụng giá trị B làm điểm ngắt, thất bại trên cùng một ví dụ. – Trejkaz