Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 15:10 01.06.24 
Компютри и Интернет
   >> Delphi
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | 3 | >> (покажи всички)
Тема flicker при наследниците на TGraphicControlнови  
АвторЦ++ (Нерегистриран)
Публикувано05.10.06 13:01



наследниците на TGraphicControl нямат Handle, и VCL предоставя някакъв вътрешен механизъм за комуникация и препращане на конкретни съобщения. така те получават и WM_PAINT съобщението, но тъй като е генерирано от родителския контрол се стига до един кофти момент - не можеш да прихванеш и спреш премигването (изтриването на фона преди изрисуването, което явно става някъде из кода на този визмислен и вграден механизъм).

т.напр. TPaintBox задължително премигва и няма начин как да се избегне според мен (освен да ползвате или си направите друг контрол).

някой да се е борил с нещо подобно и да има някакви по-добри идеи по въпроса ?



Тема Re: flicker при наследниците на TGraphicControl [re: Ц++]  
АвторToTo (Нерегистриран)
Публикувано19.10.06 01:22



Решението е елементарно, при създаване на битмапа примерно пишеш следното:

DoubleBuffered := True;



Надявам се това да помогне



Тема Re: flicker при наследниците на TGraphicControlнови [re: ToTo]  
АвторЦ++ (Нерегистриран)
Публикувано30.10.06 22:00



DoubleBuffered е при наследниците на TWinControl. TPaintBox няма такава опция.

намерих обаче заобиколен вариант - слагам същата тази опция за формата, която съдържа TPaintBox DoubleBuffered := True; защото формата е наследник на TWinControl (т.е. има си собствен handle както споменах по-горе, че TPaintBox и наследниците на TGraphicControl нямат собствен Handle).

поредната недомислица на Borland и недоглеждане. такива тъпи грешки и пропуски сериозно ме отвращават понякога от Delphi :(

лошото е, че ме отблъскват и от любимия ми C++Builder :(



Тема :) като си такъв отворконови [re: Ц++]  
Автор NikB (любопитен)
Публикувано31.10.06 09:30



:) като си такъв отворко, що не полсваш панел или друг наследник на tWinControl за контейнер на tPaintBox-а си, ами буферираш цялата форма?
Освен това PaintBox-а, както и много други неща в Делфи, са направени да улесняват масовите задачи (да спестяват 90% от работата за 90% от задачите) - не можеш да очакваш универсално решение за всеки частен случей.
Като искаш ефективност - рисувай си на някоя Canvas, сам си буферирай когато ти е кеф и всичко е ОК.



Тема Re: flicker при наследниците на TGraphicControlнови [re: Ц++]  
Автор Mixy (@#$%^)
Публикувано31.10.06 10:27



Това не е недомислица на Borland - тъкмо обратното



Mixy

Тема Re: :) като си такъв отворконови [re: NikB]  
АвторЦ++ (Нерегистриран)
Публикувано31.10.06 16:48



много прибързан отговор. сега поред:

що не ползвам друг наследник на TWinControl - ами щото ме мързи. на Delphi се занимавам само за хоби и забавление (сериозните неща ги правя на Ц++).

другото - не съм казвал никъде че буферирам цялата форма.

точно ефективност очаквам - рисувам си в OFF-SCREEN битмап, където е буфериран image-а, след което го пльосвам при OnPaint в конкретния PaintBox. проблема е че родителският прозорец получава съобщението за изчистване на background-а и се изчиства, при което изчиства и фона на пейнтбокса. след което при WM_PAINT освен че изрисува родителския контрол, препраща и към клиентските контроли това съобщение (тъй като те няма по никакъв начин как да го получат от уиндоус).

за отбелязване е, че в сорса като че ли съгледах че прави комплексен DC в който да рисува като премахва размерите на клиентските контроли от TGraphicControl наследниците, но въпреки това се сбозва нещо.



Тема Re: flicker при наследниците на TGraphicControlнови [re: Mixy]  
АвторЦ++ (Нерегистриран)
Публикувано31.10.06 16:57



ами преди да кажа толкова сериозно обвинение срещу някого (като че е недомислица - в случая срещу борланд) сериозно порових из сорса на TWinControl, TControl, TGraphicControl.

с много идея е правено и проектирано, но явно някой си е оставил ръцете (и не за първи път).

идеята на TGraphicControl-ите е според мен все пак да не товари системата със допълнително заделяне на Handle за всеки контрол (което е ресурсоемко) ами да се емулира прозрачно абсолютно същото поведение на контрола като му се препредават вътрешно през борландските обекти съответните събития.

и това става ... почти. освен ако не бяха тук таме някои понакуцващи моменти, които винаги ще цъфнат баш когато не ги очакваш.



Тема TGraphicControl vs TCustomControlнови [re: Ц++]  
АвторЙopдaн (Нерегистриран)
Публикувано31.10.06 18:56



TWinControl provides the common functionality for all controls that act as wrappers for Microsoft Windows screen objects (“windows”).
Every TWinControl object has a Handle property which provides the window handle for the underlying Microsoft Windows screen object.

Handle на какво се очаква да има TGraphicControl ? ? ?

Съвсем друга е работата с TCustomControl.



Тема Re: :) като си такъв отворконови [re: Ц++]  
Автор Mixy (@#$%^)
Публикувано31.10.06 20:41



> що не ползвам друг наследник на TWinControl - ами щото ме мързи.

Е, не обвинявай хората от Борланд за това, че теб те мързи

.

Има начин PaintBox-a да не се изчиства преди всяко пречертаване - задай прозрачен стил на четката и си готов.

Mixy

Тема Re: flicker при наследниците на TGraphicControlнови [re: Ц++]  
Автор Mixy (@#$%^)
Публикувано31.10.06 20:45



Местата с недомислици и бъгове в сорса на VCL се броят на пръсти - това е една от най-стабилните и ефективни библиотеки. Замисли се, какво копират от M$ с простотията, наречена NET



Mixy


Страници по тази тема: 1 | 2 | 3 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.