Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Создание анимированного гифа / 3 сообщений из 3, страница 1 из 1
05.02.2015, 14:51
    #38872379
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание анимированного гифа
Стоит задача создать в памяти анимированный гиф, представляющий из себя баннер с несколькими текстами, которые должны сменять друг друга.

Могу создать кадр с текстом, могу слепить из кадров анимашку с помощью велосипеда , но есть проблема.

Она в том, что размер файла получается великоват, вот этот цикл из 10 кадров занимает 10 кб, причем манипуляции с уменьшением размера второго и последующих кадров на размере не отражаются.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
        Dim enc As New AnimatedGifEncoder
        Dim ms As New MemoryStream
        Dim f As New Font("Verdana", 10)
        enc.Start(ms)
        enc.SetRepeat(0)
        For x As Integer = 1 To 10
            enc.SetDelay(x * 100)
            Dim objBitmap As Bitmap
            If x = 1 Then
                objBitmap = New Bitmap(200, 50)
            Else
                objBitmap = New Bitmap(20, 20)
            End If
            Using objGraphics As Graphics = Graphics.FromImage(objBitmap)
                objGraphics.DrawString(x.ToString, f, Brushes.White, 0, 0)
            End Using
            If x <> 1 Then objBitmap.MakeTransparent(Color.Black)
            enc.AddFrame(objBitmap)
        Next
        enc.Finish()
        Dim fs As New FileStream("f:\anitest.gif", FileMode.Create, FileAccess.Write)
        ms.Position = 0
        ms.CopyTo(fs)
        fs.Dispose()
        ms.Dispose()

А еще хотелось бы сделать смену текстов с анимацией (например, новый текст выползает снизу), а это еще больше усугубит проблему с размером.

Может есть более продвинутые велосипеды, нежели ngif?
...
Рейтинг: 0 / 0
05.02.2015, 14:58
    #38872397
Ilya81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание анимированного гифа
В WPF есть стандартные средства . Анимированные создавать им не пробовал, но по идее возможность должна быть, раз есть свойство Frames.
...
Рейтинг: 0 / 0
05.02.2015, 16:08
    #38872520
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание анимированного гифа
Свойство BitmapEncoder.Frames это просто IList(Of BitmapFrame). У BitmapEncoder нет ничего похожего на количество циклов а у BitmapFrame — на задержку.

А еще
авторOnly Tagged Image File Format (TIFF), Graphics Interchange Format (GIF), and Microsoft Windows Media Photo images support more than one frame.Скорее всего будет отображаться только первый кадр.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Создание анимированного гифа / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]