Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
15-1169304400
vidiv
2007-01-20 17:46
2007.02.11
Не нравится


6-1157356395
IdSNMP
2006-09-04 11:53
2007.02.11
Что про IdSNMP ни кто не просвятит?


15-1169381276
Expell
2007-01-21 15:07
2007.02.11
Вот о прокрутке баянчик


15-1168870805
oxffff
2007-01-15 17:20
2007.02.11
Взгляд на С++ с другой стороны.


3-1164029298
Ольга
2006-11-20 16:28
2007.02.11
Ошибка I/O Error 103 при работе с базой данных Paradox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский