Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.031 c
8-1150711986
Sahalin
2006-06-19 14:13
2007.02.11
Midi


15-1169228956
vrem
2007-01-19 20:49
2007.02.11
Есть ли у Вас проблемы с головой?


2-1169473545
hgd
2007-01-22 16:45
2007.02.11
Вопрос по RGB


15-1169076303
DeadMeat
2007-01-18 02:25
2007.02.11
DevExpress


9-1143715110
Ancient
2006-03-30 14:38
2007.02.11
Скрипты для Делфей




   Наверх