Форум — Ответы ( К темам )
? | 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. |