Нарисовать прямоугольник на панели Visual C++ с помощью события рисования

Я нарисовал несколько прямоугольников на панели, используя CreateGraphics(). Хотя они всегда исчезали после минимизации и восстановления окна, я использовал событие рисования, чтобы восстановить их, и все работает нормально, всегда используя «CreateGraphics()».

Однажды г-н Ханс Пассант дал мне совет ЗАМЕНИТЬ 'CreateGraphics()' на событие рисования панели. Мне кажется, что событие 'paint' также используется для создания, а не только для восстановления.

Visual C++ DrawRectangle заполнен:

... В общем, не используйте CreateGraphics(), что бы вы ни рисовали, оно не сохранится. Например, сверните и восстановите окно. Вместо этого используйте событие Paint панели. — Ханс Пассант

Я так пробовал, но у меня не получилось. Мне всегда был нужен «CreateGraphics», чтобы инициализировать указатель на класс «Graphics» и использовать метод «drawRectangle»:

System::Drawing::Graphics ^drawPointer = CreateGraphics();

После этого вы создаете прямоугольник с

drawPointer->drawRectangle(...); 

Но переходя к «событию рисования» панели, как мне получить доступ к методу «drawRectangle» без использования «CreateGraphics ()»? Или мне не так посоветовали?


person Uwe_98    schedule 14.08.2013    source источник
comment
Используйте e-›Graphics-›DrawRectangle() в обработчике события Paint.   -  person Hans Passant    schedule 15.08.2013


Ответы (1)


Не знаю, правильно ли я вас понял, но обычно вы получаете такую ​​возможность рисования:

System::Void Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e) {
System::Drawing::Graphics^ g = e->Graphics;
    g->DrawRectangle(...);
}
person FluffyNights    schedule 16.08.2013