タイトル | : Re^2: CenterColor を指定しない PathGradientBrush |
記事No | : 5920 |
投稿日 | : 2007/07/25(Wed) 18:29 |
投稿者 | : たいち |
> レスが無いのは、一体何をしたいのか解らないからではないでしょうか?
失礼しました。もう少し詳細に記述したいと思います。
四角形の内部の各頂点に別々の色を指定しそれらが反映されるグラデーションを描画する場合に、PathGradientBrushが使えますよね。
四角形の内部をPathGradientBrushでグラデーションを描画する場合、通常、四角形の頂点(以下点1〜点4と呼ぶ)とPathの中心位置(以下点5と呼ぶ)の合計5箇所の色を指定します。 ※前回の投稿では頂点を辺と記述していました。辺は間違いで頂点が正です。
コードで表現すると例えば以下のようになります (VisualBASIC 2005 Express/.Net 2.0環境でPictureBoxのPaintハンドラに実装) ------------------------------------- Dim g As Graphics = e.Graphics Dim gPath As New GraphicsPath gPath.AddRectangle(g.VisibleClipBounds) Dim gBrush As New PathGradientBrush(gPath) gBrush.SurroundColors = New Color() {Color.Yellow, Color.Green, Color.Blue, Color.Red} gBrush.CenterColor = Color.Yellow g.FillRectangle(gBrush, g.VisibleClipBounds) ------------------------------------- (一部コードを割愛しています)
このとき、中心の点5から四角形の各頂点(点1〜点4)を結ぶ最短距離の線上付近に描画される色がグラデーション上濃い色が選択されるようで、太い線が描画されているように見えます。(ちょうど太陽などを撮影したときに現れるX字状の効果のように見えます) ※前回の投稿ではこれを「ピーク」と勝手に呼びました
これが出ないような描画方法は無いものでしょうか?というのが質問の趣旨です。 当方のやりたいこととしては四角形の4頂点のみ別々色を指定したグラデーションの描画であって、中心位置の色を指定しないと言うことができないかと考えています。
で、補足事項として、この「太い線に見えるもの」が描画されないような回避方法として、中心位置に四角形の1頂点の座標を指定しても、中心位置の色を無設定にしても効果がなかったということを質問の後半に記載したつもりでした。
四角形4頂点の色を別々に指定したいので、LinearGradientBrushでは要求を満たせないと思っています。
既存の関数もしくは上記が実現できるアルゴリズムなどの情報があれば是非ご教示いただきたく思います。
よろしくお願いします
|