Я использую GDI + в своем приложении, и мне нужно использовать повернутый LinearGradientBrush для рисования нескольких канавок точно таким же образом. Однако, хотя я вызываю один и тот же код для заполнения каждого прямоугольника, результаты не соответствуют ожиданиям. Вот код для создания градиентной заливки, где rcDraw - это прямоугольник, содержащий область для рисования для каждого прямоугольника. Эти координаты находятся в координатах родительского окна, поэтому они не идентичны для двух ритов.
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).). Вы можете видеть, как будто заливка из первого прямоугольника продолжается во второй. Что я действительно хочу, так это чтобы эти два прямоугольника выглядели одинаково. Я думаю, что могу сделать это, если я рисую каждый прямоугольник отдельно, используя его собственные клиентские координаты, но для целей моего приложения мне нужно использовать координаты родительского окна.
Полагаю, я спрашиваю, как GDI + вычисляет «происхождение» заливки? Всегда ли это основано на 0,0 в используемой вами системе координат? Есть ли способ сдвинуть его? Я пробовал TranslateTransform, но, похоже, он не сдвигает заливку так, как мне кажется предсказуемым или понятным.