Domanda

Saluti,

Sto avendo un problema usando GDK.PixBufanimationiter di un PixBufanimation. Il codice va qualcosa del genere:

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

Ecco cosa ho letto su pixbufanimation.iter:

start_time è l'ora di inizio specificata come un galleggiante come output dal Python time.time() funzione. start_time Segna l'inizio della riproduzione dell'animazione.

GTK# non ha il time.time() funzione, e ho provato quanto segue:

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

Ma ciò non sembra recuperare in modo coerente. I numeri generati da questo sembrano molto casuali e probabilmente stanno tirando dall'indirizzo sbagliato in memoria (solo un'ipotesi, non citarmi su questo).

Ho anche letto questo da un'altra documentazione di PixBufanimation:

Come scorciatoia, se start_time è NULL, il risultato di g_get_current_time()verrà utilizzato automaticamente.

Tuttavia, il compilatore rifiuta di consentire un NULL Valore per Intptr.

Ho anche letto che il "tempo corrente" viene utilizzato solo se si sta cercando di scherzare con l'animazione, come rendere il display di animazione più veloce o più lento.

Qualcuno può aiutarmi?

È stato utile?

Soluzione

Se si passa Intptr.Zero al metodo Getiter, dovrebbe essere lo stesso di passare null al metodo C. Questa API è un po 'carente nel vincolo, a dire il vero, poiché il parametro Start_time dovrebbe essere un gtimeval che è ancora illimitato in glib-nitini. Potresti certamente presentare un bug per questo e possiamo estendere l'API. Probabilmente potremmo usare un sovraccarico di getter (), ad esempio, per gestire questo scenario in modo più pulito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top