アプリケーションでGDI+を使用していますが、回転したLinearGradientBrushを使用して、まったく同じ方法で複数の四角形をペイントする必要があります。ただし、各rectを埋めるために同じコードを呼び出していますが、結果は期待したものではありません。グラデーション塗りつぶしを作成するコードは次のとおりです。ここで、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番目の長方形に続くかのように見えることがわかります。私が本当に望んでいるのは、2つの長方形を同じように見せることです。独自のクライアント座標を使用して各rectを個別にペイントすればそれができると思いますが、アプリの目的のために、親ウィンドウの座標を使用する必要があります。
私が求めているのは、GDI+が塗りつぶしの「原点」をどのように計算するかということだと思います。使用する座標系の0,0に常に基づいていますか?それをシフトする方法はありますか?TranslateTransformを試しましたが、予測可能または理解可能な方法で塗りつぶしがシフトしていないようです。