2011-02-11 2 views
0

Привет,GTK # и PixbufAnimation итерации

Я имею проблему с помощью Gdk.PixbufAnimationIter из PixbufAnimation. Код идет что-то вроде этого:

Gdk.PixbufAnimation animation = new Gdk.PixbufAnimation(System.IO.Path.Combine([filepath], [filename])); 
Gdk.PixbufAnimationIter iter = animation.GetIter([Current Time as IntPtr]); 

Вот что я прочитал о PixbufAnimation.Iter:

start_time время начала указано как поплавок, как выход из функции Python time.time(). start_time отмечает начало анимации воспроизведение.

GTK # не имеет функции time.time(), и я попытался следующие:

long StartTime = DateTime.Now.Millisecond; 
IntPtr SysTime = new IntPtr (&StartTime); 
Gdk.PixbufAnimationIter iter = animation.GetIter(SysTime); 

Но это не похоже, чтобы получить в любое время последовательно. Цифры, генерируемые из этого, кажутся очень случайными и, вероятно, вытягиваются из неправильного адреса в памяти (только предположение, не цитируйте меня на этом).

Я также прочитал это из другой документации PixbufAnimation:

Как ярлык, если start_time является NULL, результат g_get_current_time() будет использоваться автоматически.

Однако компилятор отказывается разрешать значение NULL для IntPtr.

Я также прочитал, что «Текущее время» используется, только если вы пытаетесь объединиться с анимацией, например, сделать анимацию более быстрой или медленной.

Может ли кто-нибудь помочь мне?

ответ

2

Если вы передадите метод IntPtr.Zero методу GetIter, это должно совпадать с передачей NULL методу C. Честно говоря, этот API немного не хватает в привязке, так как параметр start_time должен быть GTimeVal, который пока еще не был близок. Вы наверняка можете найти ошибку для этого, и мы можем расширить API. Например, мы могли бы использовать перегрузку GetIter(), чтобы обработать этот сценарий более чисто.

+0

Спасибо, и самое смешное в том, что я изначально использовал IntPtr.Zero, чтобы получить компиляцию моего кода, но я чувствовал, что из-за этого моя анимация не отображается правильно. Однако это не так. Посредством отладки я вижу, что анимация правильна правильно и захватывает правильные pixbufs и время задержки, однако pixbuf не может быть повторно нарисован в окне после инициализации. Кажется, что если вы не используете Gtk.Image или Gdk.Image, у вас действительно очень мало вариантов обработки анимаций, а тем более анимации, которые требуют добавления альфа-цвета. – MrFreeman

 Смежные вопросы

  • Нет связанных вопросов^_^