나는 누군가 내가 나를 도울 수 있기를 바랄 수있는 이상한 드로잉 인공물을 가지고 있습니다.수동 페인팅 문제
기본적으로 나는 제대로 작동하지 않은 그라데이션 배경이 있어야하는 왼쪽 도킹 패널이 있습니다. 나는 패널 왼쪽 도킹
screenshot http://img509.imageshack.us/img509/5650/18740614.png
디버깅을 위해 색상을 변경하고, 그 위에 투명한 컨트롤 (투명 컨트롤이 제대로 그려진 된 곳에 따라서는 가장자리를 따라 빨간색의 작은 스텁을 볼 수있다했습니다 , 배경색 선택).
그러나 패널의 크기를 느리게 조절하면 아래쪽에 빨간 선이 남게되어 노란색으로 채워질 것으로 예상됩니다. 이것의
// Construction
sidePanel.Paint += new PaintEventHandler(OnPaint);
private void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Panel pb = sender as Panel;
PaintControl(pb.Width, pb.Height, sender, e, true);
}
private static void PaintControl(int width, int height, object sender, PaintEventArgs e, bool sidebar)
{
Rectangle baseRectangle = new Rectangle(0, 0, width -1, height-1);
using (LinearGradientBrush gradientBrush = new LinearGradientBrush(baseRectangle, WizardBaseForm.StartColour, WizardBaseForm.EndColour, 90))
{
e.Graphics.Clear(Color.Yellow);
e.Graphics.DrawRectangle(Pens.Red, baseRectangle);
e.Graphics.FillRectangle(Brushes.Yellow, baseRectangle);
}
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Invalidate();
}
전체적인 효과는 제가 크기를 조정할 때 나는 좋은 단색, 또는 좋은 그라데이션 채우기 중 하나를받지 못했습니다이다 다음과 같이 내가 사용하는 코드입니다. 새로운 기능 (InitializeComponents 후) 다음
충분합니다. 매력처럼 작동합니다. 나는 아직도 원래의 문제가 왜 그 자체를 드러 냈는지 이해하지 못한다. – Ian
크기를 조정할 때 페인트 이벤트가 발생하지 않기 때문입니다. 따라서 ResizeRedraw로 강제해야합니다. 나머지는 강제적이지는 않지만 작은 방법으로 개선하는 데 도움이됩니다. 이전에 양식이 깜박이는 것은 패널이 아닌 양식의 스타일을 설정했기 때문입니다. 그것은 재미있는 세계, 수동 그림 세계! – ThePower