我必须编写几个小垂直渐变(在循环上),所以我认为重新使用现有的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值由值传递,没有更新原始机制。

更改整个渐变数组时,数组的属性设置器将更改写回非托管对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top