私が知る限り、GIFアニメーションイメージを直接使用する方法はありません。今述べたIVsStatusbar.Animation方法として
:
[IN] VARIANTがVT_I2ある場合、それは 予め定義されたアニメーションアイコンのSBAI_Indexを指します。このパラメータがVT_I4の場合は、 の幅が の高さの倍数になるように、アニメーション用のフィルムストリップイメージを含むHBITMAPを参照します。あなたのGIFファイルは、その幅がコピーすることにより、その高さの倍数であるBMP画像に変換し、BMPファイルにGIF画像のすべてのフレームをペーストして、あなたが言及、第2のリンクで提供されているコードを使用することができます
に。
例えば、ここでは、アニメーションのための5つのフレームが含まれて私が作成したBMPの画像は、次のとおりです。
はそれを、BMPファイルとしてこの画像を保存し、第2のリンクのコードを使用してデバッグ:
private void MenuItemCallback(object sender, EventArgs e)
{
IVsStatusbar statusBar = (IVsStatusbar)ServiceProvider.GetService(typeof(SVsStatusbar));
Bitmap b = new Bitmap(@"D:\ani.bmp");
IntPtr hdc = IntPtr.Zero;
hdc = b.GetHbitmap();
object hdcObject = (object)hdc;
statusBar.Animation(1, ref hdcObject);
System.Windows.Forms.MessageBox.Show("Click OK to end status bar animation.");
statusBar.Animation(0, ref hdcObject);
DeleteObject(hdc);
}
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern bool DeleteObject(IntPtr hObject);
次のようにVisual Studioでのアニメーションが表示されます。