2013-10-04 4 views
-1

Я пытаюсь нарисовать серию прямоугольников в приложении Windows Form на C#. Я использую System.Drawing.Graphics для рисования Rectangles. Они работают нормально, но как только я переключусь на другое приложение на своем компьютере или скрою форму, они просто исчезают. Кто-нибудь знает, почему это так?Исчезновение фигур в Windows Forms

System.Drawing.Graphics graphics = this.CreateGraphics(); 
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(
    25 + (32 * PASS_THROUGH), 190, 32, 32); 
graphics.DrawRectangle(System.Drawing.Pens.Green, rectangle); 
+5

Вы не рисуете их в ответ на событие WM_PAINT. Вам нужно прикрепить обработчик события к событию 'Control.Paint' или переопределить' OnPaint'. Если вам нужна дополнительная помощь, отправьте код. –

+1

Добавил код, прошу прощения – Evan

+0

@TrevorElliott Опубликовать в качестве ответа, чтобы я мог поддержать вас. – Tarik

ответ

3

Вы не собираетесь рисовать правильный путь. Вот некоторые основные сведения о том, как это работает:

http://msdn.microsoft.com/en-us/library/kxys6ytf.aspx

Вы должны иметь код, который выглядит следующим образом:

protected override void OnPaint(PaintEventArgs e) 
{ 
    base.OnPaint(e); 

    Rectangle = new Rectangle(25 + (32 * PASS_THROUGH), 190, 32, 32); 
    e.Graphics.DrawRectangle(Pens.Green, Rectangle); 
} 

Windows, будет вызывать этот метод всякий раз, когда это необходимо перекрашивать окно.

Если вы хотите изменить динамическое раскрашивание, вам нужно добавить логику к этому методу. Такие, как, если заявление, что пишет, if (drawRectangle) ...

Если вы хотите, чтобы сигнализировать свой контроль, чтобы перерисовать себя после изменения переменной, как мой выше примере drawRectangle, вам просто нужно вызвать метод Control.Invalidate по контролю в вопросе.

Вы можете управлять множеством различных переменных и объектов, чтобы управлять тем, что окрашено, например, список фигур. В методе рисования вы затем прокручиваете эти фигуры и рисуете их один за другим. Я не уверен, что это то, что вы пытаетесь сделать, или просто хотите настроить внешний вид своей формы, и вам не нужно динамически менять ее.