Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Вниз

Проблема с отрисовкой.   Найти похожие ветки 

 
Марина   (2006-06-12 16:57) [0]

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


var
 Bitmap: TBitmap;
begin
 Bitmap := TBitmap.Create;
 Bitmap.LoadFromFile("1.bmp");

 PaintBox1.Canvas.Draw(0, 0, Bitmap);

 Bitmap.Free;
end;


Почему, когда я рисую на канвасе PaintBox в событии OnPaint формы (как вроде бы и следует делать), то рисунок стирается, стоит перелистнуть вкладку? Как рисовать так, чтобы рисунок сохранялся?
И еще, если не трудно, скажите можно ли рисовать так, чтобы один рисунок был постоянным, а дргие, рисуемые поверх него стирались при перелистывании страницы? Если да - то как?
-------
И еще, как рисовать на панели, ведь у него нету свойства Канвас ?

Спасибо.


 
Rial ©   (2006-06-12 17:46) [1]

А у PaintBox ведь есть и свой OnPaint.

Для панели:

Var DC:HDC;
...
DC:=GetDC(Panel.Handle);
...
FillRect(DC,...);
и т.п.

...
ReleaseDC(Panel.Handle,DC);
DeleteDC(DC);


> И еще, если не трудно, скажите можно ли рисовать так, чтобы
> один рисунок был постоянным, а дргие, рисуемые поверх него
> стирались при перелистывании страницы? Если да - то как?
>

Не понял.


 
Марина   (2006-06-12 18:14) [2]

Rial спасибо:)

> Не понял.

Вобщем представте, у вас нарисована картинка на форме. В моем случае сотовый телефон. Картинка постоянная, то есть нестираемая. Сверху на этой картинке вы рисуете стрелочки красного цвета указывающие на какую бы то нибыло кнопку сотового, или его часть. Так вот, меня интересует как можно сделать так, чтобы эти стрелочки в последствие можно было стереть оставив в целости и сохранности картинку самого сотового.
Как это сделать ?

И еще, если не трудно, покажите пожалуйста простой примерчик рисования например крестика или стрелочки на канвасе формы. Если можно. то красного цвета. А то я никак не могу разобраться с этими
MoveTo(y,x);
LineTo(y,x);
 

Не получается у меня ими нарисовать стрелочку или крестик :((


 
Rial ©   (2006-06-12 18:30) [3]

2.
Крестик красного цвета

procedure TForm1.Krestik(Const X,Y,Size:Integer);//Size - размер крестика
begin
With Canvas do begin
 Pen.Width:=4;//Толщина крестика
 Pen.Color:=clRed;
 MoveTo(X-Size,Y-Size);
 LineTo(X+Size,X+Size);
 MoveTo(X-Size,Y+Size);
 LineTo(X+Size,Y-Size);
end;
end;

1.
В лоб стереть крестики не получиться.

Самый простой вариант:

а)Делаем копию нашего телефона в TBitmap.
Создаем также еще один битмап, на нем тоже рисуемм этот телефон.
б)По мере необходимости рисуем на второй битмап первый,
а также все необходимые крестики.
Выводим на экран только битмап.

Рисовать на битмапе можно элементарно:
Bitmap.Canvas вместо Canvas (это то же, что и Form1.Canvas);

Т.о. если нужно убрать крестик - перерисовываем 1-й на 2-й битмап, а
также все крестики кроме злосчастного.

Такой способ вывода одного только битмапа по OnPaint сильно
увеличит быстродействие, если, конечно, эти крестики не мигают как угарелые.

в)Не забываем удалить обе картинки.


 
Марина   (2006-06-12 19:09) [4]

Rial

Спасибо!    
Спас! :-*



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
1-1148290916
Juice
2006-05-22 13:41
2006.07.02
ShowModal в DataModule.OnDestroy


2-1150369163
Pe+erBuild
2006-06-15 14:59
2006.07.02
Scrool в грид


3-1146997440
Phantomouse
2006-05-07 14:24
2006.07.02
Определить тип базы


1-1148444505
John Magic
2006-05-24 08:21
2006.07.02
Параллельность проигрывания Gif-файла


2-1150194744
JTAG
2006-06-13 14:32
2006.07.02
Господа, подскажите пожалуйста, как заменить иконку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский