当前位置: 首页 > 编程语言 > C#

如何获取Windows8.1中WPF窗口的标题栏颜色?Share

时间:2023-04-10 23:24:10 C#

如何在Windows8.1中获取WPF窗口的标题栏颜色?要使用WindowChrome类自定义窗口的外观,我想获取Windows8.1中WPF窗口的标题栏颜色。首先,我尝试了SystemParameters.WindowGlassColor但此属性不包含正确的alpha值(它始终为255)。其次,我尝试了这个函数:DwmGetColorizationColor,一开始它似乎工作正常。返回值具有正确的颜色信息,包括alpha通道。但是,当通过“颜色和外观”对话框中的滑块更改“颜色强度”时,返回值与实际值相差甚远,并显示奇怪的颜色。那么,有没有人有替代方案或解决方法的想法?我找到了解决办法。其实基本点已经谈过了。顺序为:通过DwmGetColorizationParameters函数(未记录的API)获取参数。将colorizationColor参数转换为忽略alpha通道的Color。准备基础灰色(R=217,G=217,B=217)。使用对应于“颜色强度”的colorizationColorBalance参数混合两种颜色。所以,我的代码如下:以上是C#学习教程:如何获取Windows8.1中WPF窗口的标题栏颜色?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——publicstaticColor?GetChromeColor(){布尔已启用;varhr1=DwmIsCompositionEnabled(outisEnabled);if((hr1!=0)||!isEnabled)//0表示S_OK。返回空值;DWMCOLORIZATIONPARAMS参数;try{//此API未记录,因此在未来版本的操作系统中可能无法使用。varhr2=DwmGetColorizationParameters(输出参数);if(hr2!=0)//0表示S_OK。返回空值;}赶上{返回空;}//将着色颜色参数转换为忽略alpha通道的颜色。vartargetColor=Color.FromRgb((byte)(parameters.colorizationColor>>16),(byte)(parameters.colorizationColor>>8),(byte)parameters.colorizationColor);//准备基础灰色。varbaseColor=Color.FromRgb(217,217,217);//使用着色颜色平衡参数混合两种颜色。返回BlendColor(targetColor,baseColor,(double)(100-parameters.colorizationColorBalance));}privatestaticColorBlendColor(Colorcolor1,Colorcolor2,doublecolor2Perc){if((color2Perc本文搜集自网络,不代表立场,如涉及侵权请点击右边联系管理员删除.如有转载请注明出处: