Time GTK#和PixbufAnimation迭代

Time GTK#和PixbufAnimation迭代,time,iterator,gtk#,pixbuf,Time,Iterator,Gtk#,Pixbuf,您好 我在使用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的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\u time
是指定的开始时间 作为浮点值作为Python的输出
time.time()
函数<代码>开始时间标记 动画的开始 播放

GTK#没有
time.time()
函数,我尝试了以下方法:

long StartTime = DateTime.Now.Millisecond;
IntPtr SysTime = new IntPtr (&StartTime);
Gdk.PixbufAnimationIter iter = animation.GetIter(SysTime);
但这似乎并没有持续地恢复任何时间。由此生成的数字似乎非常随机,可能是从内存中的错误地址提取的(只是猜测,不要引用我的话)

我还从另一份PixbufAnimation文档中阅读了这篇文章:

作为快捷方式,如果开始时间为
NULL
g\u get\u current\u time()的结果
将自动使用

但是,编译器拒绝为IntPtr提供
NULL

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


有人能帮我吗?

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

谢谢,有趣的是,我最初使用IntPtr.Zero只是为了编译代码,但我觉得我的动画因此无法正确显示。然而,情况并非如此。通过调试,我可以看到动画正在正确播放,并获取了正确的pixbuf和延迟时间,但是初始化后无法在窗口上重新绘制pixbuf。似乎如果不使用Gtk.Image或Gdk.Image,处理动画的选项就很少了,更不用说需要添加alpha颜色的动画了。