如何更改GDI + LineArgRadientBrush的颜色?
-
28-09-2020 - |
题
我必须编写几个小垂直渐变(在循环上),所以我认为重新使用现有的lineargradientbrush(正确?)
但这不是我期望发生的...
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 };
. 其他提示
这可能是学术(也许在回顾中可能很明显!),但改变单个颜色的原因是不起作用的,就是在向您提出之前从非托管代码中提取颜色 - 您是给定颜色的副本,这就是你正在改变的。或者,要更正式地放置它,语句中的L值由值传递,没有更新原始机制。
更改整个渐变数组时,数组的属性设置器将更改写回非托管对象。
不隶属于 StackOverflow