forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Delphi (http://forum.boolean.name/forumdisplay.php?f=66)
-   -   Проблема с прорисовкой (http://forum.boolean.name/showthread.php?t=15303)

PassCall 17.08.2011 16:40

Проблема с прорисовкой
 
Доброго дня всем.

У меня такой вопрос: как правильно прорисовывать в дельфине графику?

Тоесть проблема в том, что при прорисовки (canvas.rectangle (0,0,100,100) например) графика не заноситься в графический буфер, а выводится сразу на экран. По этому если циклически выводить много графики, начинается мерцание, которое выводит уже через 5 секунд.

В МидлетПаскале есть такая процедура "Repaint". А если ли чтото подобное в дельфи? Или как вообще правилно работать с графикой? Подскажите!

Girugamesh 17.08.2011 16:51

Ответ: Проблема с прорисовкой
 
Я делаю так: Создаю дополнительный Битмап- Bitmap:=Tbitmap.create(), рисую в его канвас, затем методом Draw на основной канве отображаю Bitmap: Canvas.Draw(0,0,Bitmap);
p.s. Еще есть свойство DoubleBuffer

PassCall 18.08.2011 17:08

Ответ: Проблема с прорисовкой
 
что-то никак не рисуется

Код:

procedure TForm1.FormCreate(Sender: TObject);
begin
qwe:=Tbitmap.create;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  for i:=1 to 100 do
    begin
    qwe.Canvas.Brush.Color:=RGB(random (256),random (256),random (256));
    qwe.Canvas.Rectangle(25,25,random(100),random(100));
    end;

    form1.canvas.Draw(0,0,qwe);
end;

нажимаю кнопку - ничего не происходит

"p.s. Еще есть свойство DoubleBuffer" где его искать то?

ViNT 19.08.2011 00:41

Ответ: Проблема с прорисовкой
 
Перед тем, как рисовать на битмапе (точнее, на его Canvas), нужно задать размеры битмапа:
Код:

procedure TForm1.FormCreate(Sender: TObject);
begin
qwe:=Tbitmap.create;

qwe.Width:=128;
qwe.Height:=128;


end;

А DoubleBuffered:boolean - это свойство формы.

И еще, советую рисовать не на форме, а на TImage.
Через буфер, естественно.


Часовой пояс GMT +4, время: 22:43.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot