为什么GDI+是线性渐变环绕?

Why is GDI+ linear gradient wrapping?

我正在使用 Gdiplus::LinearGradientBrush 为我的文档绘制阴影效果。它运行良好,但在我的文档的右侧,效果有时会在绘图区域中部分环绕。当我水平滚动时,这只会在一定范围内发生。对于大部分滚动范围,一切正常。对于文档的另一面,一切正常。当我在受影响的范围内滚动时,我可以看到渐变环绕点卡住了。我可以滚动 document/background 的其余部分,但渐变环绕点停留在我屏幕的某个像素上。

graphics.SetPixelOffsetMode(Gdiplus::PixelOffsetModeHalf); //Gdiplus::Graphics
Gdiplus::Rect shadow(rect.X + rect.Width, rect.Y + cornerRadius, shadowWidth, vSideLength);
Gdiplus::LinearGradientBrush brush(shadow, alpha1, alpha2, 180.f);
brush.SetBlendBellShape(1);
graphics.FillRectangle(&brush, shadow);

什么会导致这种影响?如果需要更好地描述问题,我可以 post 图片。

编辑:图片here。渐变环绕点以某种方式固定在我的 window 中的一个像素,并且环绕点在我滚动时不会移动。

这是由我的 AMD 6xxx 系列视频卡的驱动程序错误引起的。 Windows VGA 驱动程序没有出现这个错误。截至 10/2015 的当前 AMD 视频驱动程序仍然存在错误。解决方法是使用 16 的倍数宽度渐变。