GTK # и PixbufAnimation итерация - PullRequest
       41

GTK # и PixbufAnimation итерация

0 голосов
/ 11 февраля 2011

Привет,

У меня проблема с использованием 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 - это время начала, указанное в виде числа с плавающей запятой, выводимого из Pythontime.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.

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

Кто-нибудь может мне помочь?

1 Ответ

2 голосов
/ 14 февраля 2011

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

...