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

Вниз

Bitmap   Найти похожие ветки 

 
PHPDeveloper   (2006-11-29 05:49) [0]

Здравствуйте.
Вот такая программа, использую компонент из Vedi VCL, для анимированных гиф файлов. Так при считывании каждого кадра в отдельный битмап, последующие битмапы после первого, получаются плохого качества (с белыми пятнами, искареженными), хотя сам кадр гиф файла отображается нормально.
Вот код:

{0}

bmBrush.Assign(glSelected.Image.Frames[0].Bitmap);
bm0.canvas.Brush.Bitmap := bmBrush; битмап получается нормальным
.....
{-------}

{1}

bmBrush2.Assign(glSelected.Image.Frames[1].Bitmap);
bm1.canvas.Brush.Bitmap := bmBrush2; - битмап получается плохого качества с белыми пятнами и т.д., хотя на кадре нет, С 3ем точно также
...........
{-------}

{2}
bmBrush3.Assign(glSelected.Image.Frames[2].Bitmap);
bm2.canvas.Brush.Bitmap := bmBrush3;



 
PHPDeveloper   (2006-11-29 05:59) [1]

*Jedi


 
Дмитрий Белькевич ©   (2006-11-29 17:10) [2]

Может с pixelformat проблемы?


 
Eraser ©   (2006-11-29 17:13) [3]

> [0] PHPDeveloper   (29.11.06 05:49)

скорее всего проблема в том, что подобный код
glSelected.Image.Frames[0].Bitmap
дает доступ к "физическим" кадрам GIF"a, а там ради экономии прорисовываются только изменения относительно предыдущего кадра, или что-то вроде того.
как решить проблему - не знаю.


 
Наиль ©   (2006-11-29 17:24) [4]

> дает доступ к "физическим" кадрам GIF"a, а там ради экономии
> прорисовываются только изменения относительно предыдущего
> кадра, или что-то вроде того.

Если во втором кадре действительно только изменения, то решение напрашивается само сабой:
1. Вывести первый кадр на промежуточный BitMap
2. Вывести второй кадр поверх первого, указав, что белый (цвет пятен) - прозрачный.
3. Использовать получившийся во временом BitMap результат.
Каждый следующий кадр должен накладываться поверх всех предыдущих с учётом прозрачных пятен.


 
PHPDeveloper   (2006-11-30 03:53) [5]

Спасибо


 
PHPDeveloper   (2006-12-19 02:47) [6]

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


 
Eraser ©   (2006-12-19 10:21) [7]

> [6] PHPDeveloper   (19.12.06 02:47)

а вариант [4] не подходит?


 
PHPDeveloper   (2006-12-19 12:24) [8]


> 2. Вывести второй кадр поверх первого, указав, что белый
> (цвет пятен) - прозрачный.

Каким образом узнать какого цвета пятна? Пятна получаются разного цвета,от изображения зависит :\


 
PZ   (2006-12-19 12:34) [9]

Может быть Вам использовать GDI+. Там никаких проблем с выделением кадров из GIF-файла нет.



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

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

Наверх




Память: 0.48 MB
Время: 0.04 c
15-1169492223
Chort
2007-01-22 21:57
2007.02.11
Учебник 3Ds Max 6


15-1169161784
hmmcensured
2007-01-19 02:09
2007.02.11
вопрос по SEO


15-1169103346
chvank
2007-01-18 09:55
2007.02.11
Как Вы представляете человека?


15-1169119888
xayam
2007-01-18 14:31
2007.02.11
Открытые или коммерческие проекты?


3-1163962355
Firefly
2006-11-19 21:52
2007.02.11
Поле autoincrement в Oracle