Главная страница
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.114 c
4-1159026669
Zoe
2006-09-23 19:51
2007.02.11
Получить данные из памяти чужого процесса


15-1169554558
1234564
2007-01-23 15:15
2007.02.11
Посоветуйте обучалку по ХТМЛ


3-1163714813
dreamse
2006-11-17 01:06
2007.02.11
Помогите составить SQL запрос


4-1159448131
Baton
2006-09-28 16:55
2007.02.11
Как перейти в спящий режим?


15-1169105618
L@ti
2007-01-18 10:33
2007.02.11
О загрузке dll в самом начале приложения....