![]() |
1
1
对我来说似乎没问题。由于缺乏完整的代码示例,我假设您的合成模式是错误的。
|
![]() |
2
1
我有一个类似的 issue ,但它涉及到 layered window ,而不是在Aero的玻璃上。我没有任何代码可以用来测试这是否解决了您的问题,但我认为这值得一试,因为您的问题的症状与我的相同。
正如你所注意到的,似乎有一些
下面是我想出的两个解决办法 我的
|
![]() |
3
1
又一天,又一个解决办法。
文本呈现将无法正常工作,因为它总是将窗体的背景色作为antialas/cleartype提示。改用DrawThemeTextEx,它还支持后面带有辉光效果的文本。 |
![]() |
4
0
我和GDI遇到了同样的问题。
|
![]() |
5
0
我找到了另一个办法。使用
这可能比SolidBrush慢,但工作正常。 |
![]() |
6
0
你想要一个愚蠢的解决方案吗?给你一个愚蠢的解决方案。至少只有一行代码。并引起一个小的但不可忽视的副作用。 假设
这个聪明的优化是在DWM、Aero、Glass和所有新的花哨玩意出现之前完成的。 在内部,bitblitting只是将像素的RGBA颜色数据从一个内存区域复制到另一个内存区域(也就是说从窗口上的绘图)。可悲的是,它所写的RGB格式与玻璃区域不兼容,导致了你观察到的奇怪的透明效果。
所以这是一个转折点。 GDI+可以考虑一个转换矩阵,每个图形都可以缩放、倾斜、旋转或其他。如果我们应用这样一个矩阵,矩形不再是直角的规则就不再有保证了。因此,GDI+将停止对这些对象的位分割,并以类似于椭圆的方式绘制它们。
现在,bitblitting关闭了,矩形是实心的,紫罗兰是蓝色的。如果有一种更简单的方法来控制它,尤其是一种不移动图形的方法! 因此,如果要在第一个像素行上绘制,请使用-1作为Y坐标。 你可以决定这是否真的是你的解决方案,或者忽略它。 |