簡體   English   中英

什么是MFC的算法或函數來計算控件的高光,陰影等?

[英]What is MFC's algorithm or function for calculating controls' highlight, shadow, etc.?

我已經創建了一個CButtonColorButton子類,在樣式中設置了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM