Графика в 6-м Билдере

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

#1
Джентельменты, позвольте попросить совета.
Ситуация такая, есть изображение на форме, которое регулярно обновляется в процессе работы программы, причем с некоторыми изменениями. Для того, чтобы затирать предыдущий слой использую просто прямоугольник от угла до угла изображения, скрывающий всю старую бодягу, и на котором рисую новый рисунок. Естественно, при этом все элементы изображения, отличные по цвету от фона, мерцают мерзко. Как этого вообще можно избежать? Анимацию типа гиф или ави не предлагать, потому как изменения изображения совершенно не предсказуемы.
 
Z

zubr

#2
Если смена изображения нечастая, то можно получать растр канвы формы, вносить в нем изменения и копировать измененный растр на канву.
 
?

????

#3
Юджин
Можно попробовать рисовать с использованием Graphics32 (http://graphics32.org)
Graphics32 is a library designed for fast 32-bit graphics handling on Delphi and Kylix. Optimized for 32-bit pixel formats, it provides fast operations with pixels and graphic primitives, and in most cases Graphics32 outperforms the standard TCanvas? classes. It is almost a hundred times faster in per-pixel access and about 2–5 times faster in drawing lines.

Features
Some of Graphics32 features include:

* Works on Borland Delphi, C++ Builder and Kylix.
* Fast per-pixel access up to 100 times faster compared to standard TBitmap?;
* Bitmap alpha blending (including per-pixel alpha blending);
* Pixel, line and polygon antialiasing (combined with alpha blending);
* Locking the bitmap for safe multithreading;
* Enhanced scaling of bitmaps;
* Affine transformations of bitmaps: rotations, scaling, etc. with sub-pixel accuracy;
* Arbitrary projective transformations of bitmaps;
* Flicker-free image displaying components with optimized double buffering;
* Multiple customizable easy-to-use overlay layers;
* A property editor for RGB and alpha channel loading;
* Design-time loading of image formats supported by standard TPicture;
 
G

Guest

#4
Смена изображения как раз-таки более чем частая, поэтому в глаза и бросается, пакость такая.
Попробую эту графику32, что за оно такое. Спасибо.
 
P

Pharaon

#5
Не знаю как в Билдере. На VC делаешь графический контекст в памяти соответствующий контекту клиентской области. А потом создаешь на этом контексте(в памяти) BitMap размером соответствующим перерисовываемому прямоугольнику. Рисуешь на нем и копируешь этот BitMap на контекст клиентского окна в нужное место. Винда оптимизирована для работы с BitMapами. Все летает и никакого мерцания. Быстрее только DirectDraw.
 
Z

zubr

#6
Pharaon
В Билдере тоже самое, только вместо контекста клиентского окна можно использовать канву.
 
G

Guest

#7
Не получается что-то пока пакет Graphics32 установить. Попробую скачать другую версию, а то кинулся что-то на последнюю сразу без разбору.
 
?

????

#9
А вы сами пользуетесь этим пакетом?
Нет, мне не надо ничего рисовать :( Просто когда искал компоненты для работы с png - напоролся на это, скачал демки, а они действительно быстренько работают.
Не получается что-то пока пакет Graphics32 установить.
версия 1-7-1 спокойно ставится на D7. А какие ошибки/проблемы появляются при установке?
 
G

Guest

#10
<!--QuoteBegin-????+19:05:2005, 22:53 -->
<span class="vbquote">(???? @ 19:05:2005, 22:53 )</span><!--QuoteEBegin-->версия 1-7-1 спокойно ставится на D7. А какие ошибки/проблемы появляются при установке?[/quote]
У меня D8, но до этого и близко не доходит. Ошибка появляется еще при компиляции компонента, не говоря уж о его инсталляции. Причеи барахлит компилятор что-то по-разному. То ему линкер фатал еррор выдает, то езе чего-то ему не хватает для счастья. Хотя делаю все точно, как у них в прилагающемся мануале написано.
 
A

Alex.snooker

#11
<!--QuoteBegin-Юджин+21:05:2005, 00:47 -->
<span class="vbquote">(Юджин @ 21:05:2005, 00:47 )</span><!--QuoteEBegin-->У меня D8, но до этого и близко не доходит. Ошибка появляется еще при компиляции компонента, не говоря уж о его инсталляции. Причеи барахлит компилятор что-то по-разному. То ему линкер фатал еррор выдает, то езе чего-то ему не хватает для счастья. Хотя делаю все точно, как у них в прилагающемся мануале написано.[/quote]
Используй свойство DoubleBuffered формы или PaintBox'a где ты рисушь. Я билдером уже год не занимаюсь, но по моему работает. Могу сбросить пример где это используется(частая смена изображения и без мерцания))
 
A

Alex.snooker

#13
<!--QuoteBegin-Юджин+31:05:2005, 01:03 -->
<span class="vbquote">(Юджин @ 31:05:2005, 01:03 )</span><!--QuoteEBegin-->Был бы весьма признателен.[/quote]
Ostav svoj e-mail, please...
 
G

Guest

#14
<!--QuoteBegin-Alex.snooker+31:05:2005, 19:45 -->
<span class="vbquote">(Alex.snooker @ 31:05:2005, 19:45 )</span><!--QuoteEBegin-->Ostav svoj e-mail, please...[/quote]
tsyganoid@rambler.ru
 
Статус
Закрыто для дальнейших ответов.