Текущий архив: 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.46 MB
Время: 0.042 c