我在我的应用程序中使用 GDI+,我需要使用旋转的 LinearGradientBrush 以完全相同的方式绘制多个矩形。然而,虽然我调用相同的代码来填充每个矩形,但结果并不是我所期望的。这是创建渐变填充的代码,其中 rcDraw 是包含要为每个矩形绘制的区域的矩形。这些坐标位于父窗口的坐标中,因此它们对于 2 个矩形并不相同。
g_hbrLinear = new LinearGradientBrush( Rect( 0, rcDraw.top, 0, rcDraw.bottom - rcDraw.top ), clrStart, clrEnd, (REAL) 80, FALSE );
我在屏幕上看到的内容是这样的(http://www.nnanime.com/bugs/LinGradBrush-rotate10.png)。您可以看到,就好像从第一个矩形填充到第二个矩形一样。我真正想要的是让 2 个矩形看起来相同。如果我使用自己的客户端坐标分别绘制每个矩形,我想我可以做到这一点,但为了我的应用程序的目的,我需要使用父窗口的坐标。
我想我要问的是,GDI+ 如何计算填充的“原点”?它总是基于您使用的坐标系中的 0,0 吗?有没有办法改变它?我尝试了 TranslateTransform,但它似乎并没有以我认为可预测或可理解的方式改变填充。