Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.09;
Скачать: CL | DM;

Вниз

Победить мерцание на Canvas е.   Найти похожие ветки 

 
AlexanderMS ©   (2007-11-10 16:19) [0]

При вводе каждого символа в текстовое поле происходит рисование текста на Canvas"е PaintBox"а. При этом возникает мерцание, которое, естественно, мешает. Как можно его победить? А именно:
1) Как сделать механизм двойной буферизации, как в OpenGL? Может быть, это поможет?
2) Можно ли выводить текст XOR-ом?


 
Kolan ©   (2007-11-10 16:21) [1]

1. DuobleBuffered := True?


 
AlexanderMS ©   (2007-11-10 16:39) [2]


> 1. DuobleBuffered := True?

У какого объекта?


 
Kolan ©   (2007-11-10 16:44) [3]

TWinControl ?


 
AlexanderMS ©   (2007-11-10 17:36) [4]

Спасибо, сделал, но, скорее всего неверно: мерцание всё равно есть.

// Target : TComponent

     TPanel(Target).DoubleBuffered := true;
     Canvas := THackedPanel(Target).Canvas;//TPaintBox(Target).Canvas;
     Canvas.Brush.Color := BGColor;


и так далее.

Я просто хотел реализовать вручную, то есть создать Canvas, на него вывести, а затем через CopyRect скопировать. Как это сделать? Я пробовал, но не получалось: Canvas "не разрешал рисование".


 
homm ©   (2007-11-10 18:11) [5]

> [4] AlexanderMS ©   (10.11.07 17:36)
> Спасибо, сделал, но, скорее всего неверно

Конечно нет.

Вот рецепт.
TPanel(Target).DoubleBuffered := true; — это при загрузки формы, один раз.

Canvas.Brush.Color := BGColor; — это и прочее рисоание в OnPaint твоего TPaintBox в течении дня по мере необходимости.

Обновлять изображение — PaintBox.invalidate();


 
AlexanderMS ©   (2007-11-10 19:07) [6]


> homm ©   (10.11.07 18:11) [5]


Спасибо, попробую.

Если панель будет прорисовывться в секунду несколько раз (скорость набора на клавиатуре), мерцания не будет?
Ладно, посмотрю сам. :)


 
Kolan ©   (2007-11-10 19:15) [7]

> Ладно, посмотрю сам. :)

А ты хотел чтобы мы проверили? о_0


 
AlexanderMS ©   (2007-11-10 19:30) [8]


> А ты хотел чтобы мы проверили? о_0

Предположили :)

Большое спасибо, теперь рисую на Image, и вообще нет мерцания!


 
Gydvin ©   (2007-11-11 19:39) [9]

ну и рисовал бы на битмапе, а затем отрисовывал на паинтбокс.

зы. timage компонент вредный имхо ((


 
AlexanderMS ©   (2007-11-11 19:47) [10]


> зы. timage компонент вредный имхо ((

Да уж. Долго бился над тем, как изменить его размер... :) Да ещё с чёрным проблескиванием.


 
homm ©   (2007-11-11 19:51) [11]

> [9] Gydvin ©   (11.11.07 19:39)
> ну и рисовал бы на битмапе, а затем отрисовывал на паинтбокс.

Верно, нафига пользоватся отлаженым кодом, созданым дядушкой борландом, куда лучше свое кривое на коленке состряпать, ага? Впрочем для самообучения может и лучше.


 
Gydvin ©   (2007-11-11 20:17) [12]


> куда лучше свое кривое на коленке состряпать, ага?

Ну, смотря как стряпать )


 
homm ©   (2007-11-11 20:52) [13]

> [12] Gydvin ©   (11.11.07 20:17)
> Ну, смотря как стряпать )

А как ты думаешь, состряпает автор. если он текст на Canvas"е PaintBox"а рисуне в ON_PAINT.


 
homm ©   (2007-11-11 20:53) [14]

> [13] homm ©   (11.11.07 20:52)
> рисуне в

рисует не в

начинаю задумываться о клавиатуре дороже 100р.


 
Anatoly Podgoretsky ©   (2007-11-11 20:56) [15]

> homm  (11.11.2007 20:53:14)  [14]

Гни ее



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

Текущий архив: 2007.12.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
2-1194873717
PASZLIB
2007-11-12 16:21
2007.12.09
PASZLIB


15-1194942797
Slider007
2007-11-13 11:33
2007.12.09
С днем рождения ! 13 ноября 2007 вторник


1-1189948331
andreil
2007-09-16 17:12
2007.12.09
Ошибка времени выполнения


9-1164339612
grouzd)ev
2006-11-24 06:40
2007.12.09
А не проводить ли нам небольшие игры по кодингу? (ч. 5)


15-1194334395
Jeer
2007-11-06 10:33
2007.12.09
Компилятор D7 учитывает платформу ?