Вниз
Скачать: 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.033 c
2-1168556318
Wind
2007-01-12 01:58
2007.02.11
Создание *.xls отчета.


2-1169576713
sinys
2007-01-23 21:25
2007.02.11
watches


15-1169224186
Pasha L
2007-01-19 19:29
2007.02.11
Где мне можно чего нить почитать про ипользование прокси?


1-1166458332
Чапаев
2006-12-18 19:12
2007.02.11
Flush после Write


2-1169834817
aht
2007-01-26 21:06
2007.02.11
Поиск в StringGrid




   Наверх