문제

여러 개의 작은 수직 그라디언트 (루프에)를 작성해야하므로 기존 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 };
.

다른 팁

이것은 아마도 학업 일 것입니다 (그리고 그것은 renospect에서는 분명합니다!). 그러나 단일 색상을 변화시키는 이유는 당신에게 제시되기 전에 비 관리 코드에서 색상이 추출된다는 것입니다.색깔의 사본을 감안할 때 당신이 변화하는 것입니다.또는 공식적으로 그것을 넣으려면 명령문의 l-value가 가치로 전달되며 원본을 업데이트하는 메커니즘이 없습니다.

전체 그라디언트 배열을 변경하면 배열의 속성 setter가 변경 사항을 실행되지 않는 객체로 다시 씁니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top