0

问候,

我在使用 PixbufAnimation 的 Gdk.PixbufAnimationIter 时遇到问题。代码是这样的:

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 为NULLg_get_current_time() 将自动使用 的结果。

但是,编译器拒绝允许NULLIntPtr 的值。

我还读过“当前时间”仅在您试图弄乱动画时使用,例如使动画显示更快或更慢。

有人可以帮我吗?

4

1 回答 1

2

如果将 IntPtr.Zero 传递给 GetIter 方法,那应该与将 NULL 传递给 C 方法相同。老实说,这个 API 有点缺乏绑定,因为 start_time 参数应该是一个 GTimeVal,它在 glib-sharp 中还没有绑定。您当然可以为此提交错误,我们可以扩展 API。例如,我们可能可以使用 GetIter() 重载来更干净地处理这种情况。

于 2011-02-14T18:07:28.263 回答