Форум — Ответы     (  К темам )
 ?  Dr.Phoenix: Как сделать, чтоб нарисованное не форме не стиралось? (29-12-2002 23:02:57)
На форме рисуется линия (или много линий), потом нажимается кнопка, и вылезает другое окно, после закпытия которого, или после перемещения рисунок затирается. То же самое получается при опускании окна ниже экрана. Можно ли сделать, чтоб нарисованное не затиралось?
 Devnvd (30-12-2002 09:44:18)
Вам необходимо прорисовывать всё в отработчике события формы OnPaint.
Удобнее оформить функцию рисования в отдельную подпрограмму. Элементы, которые необходимо рисовать, надо запомнить, если вы не в состоянии этого сделать, то создайте для рисования TBitmap, в него рисуёте, а в OnPaint рисуёте этот Bitmap на форму.
Изменений в вашей программе необходимо будет сдулать не много:
Создайте Bitmap в начале программы
Graphics::TBitmap *Bitmap=new Graphics::TBitmap();
Bitmap->Width=Form1->Width;
Bitmap->Height=Form1->Height;
Рисуете всё что вам надо и когда надо используя Bitmap->Canvas.
Отработчик события формы OnPaint:
void __fastcall TForm1::Form1Paint(TObject *Sender)
{
Canvas->Draw(0,0,Bitmap);
}
 Petro (30-12-2002 09:45:09)
Рисуй линии в обработчике WM_PAINT.
 Георгий (31-12-2002 02:59:41)
для Petro:
извини, но если много линий и ты не обладатель P4 3Ггц, то твой вариант будет слишком не поворотливый и в худшем случае кроме бесконечных перерисовок ничего не будет. так что вариант Devnvd будет значительно быстрее и практичнее.
 Petro (16-01-2003 10:56:54)
2 Георгий:
Не извиняю. :) Вариант Devnvd и есть обработчик WM_PAINT.