gpt4 book ai didi

winapi - 远景/7 : How to get glass color?

转载 作者:行者123 更新时间:2023-12-03 05:57:33 24 4
gpt4 key购买 nike

如何使用DwmGetColorizationColor

documentation说它返回两个值:

  • 32 位 0xAARRGGBB 包含用于玻璃成分的颜色
  • 一个 bool 参数,“如果颜色是不透明混合”,则为 true(无论这意味着什么)

这是我喜欢的颜色,漂亮的呕吐绿色: alt text

您可以注意到颜色是绿色的,半透明标题栏(白色背景)非常清楚地显示鼻涕颜色: enter image description here

我尝试从 Windows 获取颜色:

DwmGetColorizationColor(dwCcolorization, bIsOpaqueBlend);

我明白了

dwColorization: 0x0D0A0F04
bIsOpaqueBlend: false

根据文档,该值的格式为 AARRGGBB,因此包含:

AA: 0x0D (13)
RR: 0x0A (10)
GG: 0x0F (15)
BB: 0x04 (4)

这可能意味着颜色为 (10, 15, 4),不透明度约为 5.1%。

但是如果你真的看一下这个 RGB 值,它与我想要的鼻涕绿色相差甚远。这是

  • (10, 15, 4),不透明度为零(原始颜色),并且
  • (10,15,4),白色/棋盘背景下不透明度为 5%:

alt text

DwmGetColorizationColor 返回几乎完全透明的黑色,而不是石灰绿色。

所以问题是:在 Windows Vista/7 中如何获取玻璃颜色

我尝试使用DwmGetColorizationColor,但效果不太好。

<小时/>

一个person with same problem, but a nicer shiny picture为了吸引松鼠: alt text

So, it boils down to – DwmGetColorizationColor is completely unusable for applications attempting to apply the current color onto an opaque surface.

<小时/>

我爱this guy's screenshots比我的好多了。使用他的屏幕截图作为模板,我制作了更多的 Spark :

alt text

alt text

alt text

alt text

alt text

alt text

对于最后两个屏幕截图,Alpha 混合芯片是真正的部分透明 PNG,与浏览器的背景混合。凉爽的! (我真是个极客)

编辑 2:必须将它们排列成彩虹色。 (我真是个极客)

编辑 3:现在我当然必须添加黄色。

<小时/>

无记录/不受支持/脆弱的解决方法

入口点 137 处有来自 DwmApi.dll 的未记录导出,我们将其称为 DwmGetColorizationParameters:

HRESULT GetColorizationParameters_Undocumented(out DWMCOLORIZATIONPARAMS params);

struct DWMCOLORIZATIONPARAMS
{
public UInt32 ColorizationColor;
public UInt32 ColorizationAfterglow;
public UInt32 ColorizationColorBalance;
public UInt32 ColorizationAfterglowBalance;
public UInt32 ColorizationBlurBalance;
public UInt32 ColorizationGlassReflectionIntensity;
public UInt32 ColorizationOpaqueBlend;
}

我们对第一个参数感兴趣:ColorizationColor

我们还可以从注册表中读取值:

HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM
ColorizationColor: REG_DWORD = 0x6614A600

所以你选择了创建应用程序兼容性问题的毒药。你可以

另请参阅

<小时/>

一年多以来我一直想问这个问题。我一直都知道这是不可能回答的,而让人们真正关注的唯一方法就是拥有丰富多彩的屏幕截图;开发人员被 Shiny 的东西所吸引。但不利的一面是,这意味着我必须投入各种工作来制作鱼饵。

最佳答案

着色颜色!=所选的基色。我知道这是误导。

但是我很困惑。您借用的图片来 self 的帖子“Retrieving Aero Glass base color for opaque surface rendering”。这不是你想做的吗?我还在帖子中指出了存储所有颜色信息的注册表位置(HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM)以供检索。

已编辑 8/26

DwmGetColorizationColor (dwmapi.dll) 返回“着色颜色”,它是各种颜色(包括您选择的基色)和着色器逻辑的混合,以实现整体玻璃效果。

您需要/想要的所有颜色信息都可以在上面提到的注册表项中找到。基色、混合中使用的颜色以及生成的着色颜色都在那里。

(上面的键存在于 Windows Vista 及更高版本中。)

关于winapi - 远景/7 : How to get glass color?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3560890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com