GDI + LinearGradientBrushの色を変更する方法
-
28-09-2020 - |
質問
私はいくつかの小さな垂直方向の勾配を書いて(ループ上)、既存のリニアグラジエンブラシ(正しい?)
を再利用するのが速いと思います。しかしこれは私が起こると予想されるものではありません...
Drawing2D.LinearGradientBrush myBrush = new Drawing2D.LinearGradientBrush(new Rectangle(0, 0, 200, 200), Color.Red, Color.Black, Drawing2D.LinearGradientMode.Vertical);
myBrush.LinearColors[1] = Color.Blue;
MsgBox(myBrush.LinearColors[1].ToString); //Returns black
.
だから、上記のコードにエラーがあるか、ループ上のいくつかの垂直勾配を得るためのより良い方法、またはLineargradientBrushの色を変更するための異なる方法はありますか?
ありがとうございました:)
解決
ブラシコストの構築は、実際にブラシで何かを描くために行われた仕事と比較してほとんど何もしません。
また、単一の要素を置き換える代わりに、配列全体を設定してみてください。
myBrush.LinearColors = new Color[2] { Color.Blue, Color.Whatever };
. 他のヒント
おそらく学術(そしておそらくそれの多くはRetrospectでは明らかです!)は、単一の色を変える理由は機能しませんでしたが、あなたに提示される前に非管理コードから色が抽出されることです。色のコピーを考えると、それがあなたが変化しているものです。あるいは、それをより正式に置くために、ステートメントのL値は値で渡され、元のものを更新するためのメカニズムはありません。
グラデーションアレイ全体を変更すると、配列のプロパティ設定プログラムは変更をアンマネージされていないオブジェクトに書き戻します。
所属していません StackOverflow