[英]What's the correct way to extract brightness out of a JPEG image (gamma corr., etc.)?
[英]What is MFC's algorithm or function for calculating controls' highlight, shadow, etc.?
我已經創建了一個CButton
的ColorButton
子類,在樣式中設置了BS_OWNERDRAW
標志。
它工作正常:我可以設置其文本,背景等。
但是我不想手動設置次要顏色(高亮,陰影等)我有一個啟發式選擇白色或黑色的文本基於背景。 我可以對其他次要顏色做同樣的事情,但是我的公式與Windows所做的不同,背景顏色相同,因此看起來很奇怪。 所以:
問題:有沒有辦法找出Windows會為給定背景顏色的GetSysColor(COLOR_BTNSHADOW)
返回什么?
為了預測答案,我看到CMFCButton
允許自定義顏色而不需要創建一個完整的子類。 我再次看到的東西允許設置每種顏色的微觀管理,但不是我正在尋找的高級能力。 我可能更願意堅持我的解決方案,因為它已經在運行,並且可以在XP及更高版本上運行。 (這是一個免費軟件實用程序,所以誰知道舊操作系統用戶可能會有什么。)這就是說,如果有一個CMFCButton
解決方案也會引起關注。
GetSysColor對背景顏色不敏感。 它只是有一組顏色條目(基於視覺樣式)並將返回這些值。 如果你想要對某些其他背景有意義的價值觀,你需要自己想出合理的價值觀。
根本不是一個完整的答案,但只要顏色是單色(RG和B組件相等):
高亮顏色是127 + channelvalue / 2(整數數學)
陰影顏色是channelvalue / 3 * 2(再次整數數學)
示例:R,G和B值為200的背景的高光為227,陰影為132。
對於非灰色背景,似乎發生了完全不同的計算。 我只是逐個頻道地使用上面的公式得到非常有用的結果,但原始問題不是“什么會給出有用的結果”,而是具體的“什么是Windows計算?”
Windows也有一個深色陰影顏色,我試過的每種顏色總是0x404040。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.