Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        5年前关闭。
                                                                                            
                
        
在Windows中,当控件被禁用时,它显示为灰色。哪种类型的算法可以用来实现这种效果?

谢谢

最佳答案

我不知道Windows如何做到这一点,但是如果您正在寻找一个经常执行的示例,请查看Qt's QPalette class(特别是QPalette :: ColorRole部分中的屏幕截图)。

Qt所做的是根据ColorRoles选择颜色以绘制小部件零件,例如有一个“按钮” ColorRole,它代表按钮内部的颜色。当按钮想要绘制自身时,它会询问其QPalette对象它应为Button ColorRole使用哪种颜色,然后使用该颜色绘制其内部。该按钮包含一个用于其正常外观的QPalette对象和另一个用于其禁用外观的QPalette对象...,并且与常规QPalette的外观相反,由禁用外观的QPalette指定的颜色通常更倾向于灰色。黑色/白色(尽管要由QStyle的设计师来决定它们应该是什么)。

(当然,使控件看起来变灰的快捷方法是将控件中每种颜色的红色,绿色和蓝色值与中等颜色的红色,绿色和蓝色值进行平均,灰色...但是这种技巧无法提供足够的控制权,无法在所有情况下为您提供所需的准确外观)

07-26 09:34