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

Вниз

Мигание TCanvas   Найти похожие ветки 

 
Soft(Unpowered Kiborg)   (2002-08-04 14:54) [0]

Здравствуйте.
Возникла проблемма. При перерисовке данных на компонете наследованную с TPaintBox через Canvas происходит эффект мигания. В досе это решалось через смену видео страниц:) А в виндовсе слышал, что можно как-то запретить обновления окна а потом разрешить, но не знаю как.


 
MJH   (2002-08-04 15:18) [1]

делаешь оверрайд на класс TPaintBox,
в котором отключаешь перерисовку бэкграунда

type TMyPaintBox=Class(TPaintBox)
private
procedure WMERASEBKGND(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND;
end;

implementation
procedure TMyPaintBox.WMERASEBKGND(var Msg: TWMEraseBkgnd);
begin
//Stops flicker
end;

соответсвенно нужно будет эту компоненту зарегистрировать
RegisterComponents();


 
Soft(Unpowered Kiborg)   (2002-08-04 16:27) [2]

Спасибо, но не подойдет. У меня при перерисовки топологии инет-сети происходит перетирка старых image-й при помощи

Canvas.Rectangle(Rect);

Это и приводит к миганию. Мне нужно чтоб можно было отключить изменения, нарисовать и потом чтоб все нарисованное обновилось.

Может создавать свой Canvas рисовать на нем и присваивать текущему? Какие здесь проблеммы ожидаются?


 
Goobit   (2002-08-04 17:40) [3]

Для TPaintBox можно, конечно, сделать буфер в виде TBitmap с такими же размерами и в OnPaint рисовать туда, а потом копировать этот буфер уже на канву TPaintBox"а.

А вообще можно сделать наследника от TCustomPanel (или вообще от TWinControl), где есть public-свойство DoubleBuffered, которое создает такой буфер при каждой перерисовке автоматически. В классе переопределяешь метод TCustomPanel.Paint и рисуешь в канву панели все, что угодно. И только после выхода из метода класс перерисует все окно целиком (в TWinControl.WMPaint).


 
MJH   (2002-08-04 17:47) [4]

тебе сказал в чем проблема....
короче....на OnPaint делаешь bitblt()
бэкграунд забиваешь как я сказал
на отрисовку тоже bitblt()


 
Soft(Unpowered Kiborg)   (2002-08-05 01:23) [5]

Спасибо уже решил проблемму. Создаю в рантайме объект Tpicture. Через битмап рисую а затем вывожу на Canvas. Без тормозов и мигания.

Правда в 1280x1024 32bit цвет на моем K6-350 подтомаживает:)


 
MJH   (2002-08-05 01:56) [6]

однако выход.....но ты про FastLib слышал? вроде как на DelphiGFX даже на него сcылочка была



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

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

Наверх





Память: 0.45 MB
Время: 0.008 c
14-82969
Junior
2002-11-05 01:02
2002.11.25
Прошел все Half-Life-ы...


3-82581
Gadfly
2002-11-07 11:49
2002.11.25
Почему меня все игнорируют?


1-82722
Bratva
2002-11-12 20:08
2002.11.25
Получить выделнную строку в ListBox


14-83004
Nemesis
2002-11-07 13:17
2002.11.25
Любителям смотреть видео на РС


1-82779
Barman
2002-11-12 23:23
2002.11.25
DeDe





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский