Visual studio Visual Studio状态栏中的动画图像
下面的文章解释了如何在状态栏中使用内置VS动画图标 我想知道,有没有办法在状态栏中包含自定义gif动画 位图图像可以包括如下所示Visual studio Visual Studio状态栏中的动画图像,visual-studio,visual-studio-extensions,vsix,Visual Studio,Visual Studio Extensions,Vsix,下面的文章解释了如何在状态栏中使用内置VS动画图标 我想知道,有没有办法在状态栏中包含自定义gif动画 位图图像可以包括如下所示 当我根据上面的例子指向一个gif图像时,动画并没有发生。请帮助。据我所知,没有任何方法可以直接使用gif动画图像 正如前面提到的方法: [in]如果变量是VT_I2,则它指的是 预定义的动画图标。如果此参数是VT_I4,则表示 包含用于动画的电影带图像的HBITMAP,其宽度为 应该是其高度的倍数 通过在BMP文件中复制并粘贴gif图像的每一帧,然后使用您提到的第
当我根据上面的例子指向一个gif图像时,动画并没有发生。请帮助。据我所知,没有任何方法可以直接使用gif动画图像 正如前面提到的方法: [in]如果变量是VT_I2,则它指的是 预定义的动画图标。如果此参数是VT_I4,则表示 包含用于动画的电影带图像的HBITMAP,其宽度为 应该是其高度的倍数 通过在BMP文件中复制并粘贴gif图像的每一帧,然后使用您提到的第二个链接中提供的代码,可以将gif文件转换为宽度为其高度倍数的BMP图像 例如,下面是我创建的BMP图像,其中包含5帧动画: 将此图像另存为BMP文件,使用第二个链接中的代码并对其进行调试:
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中看到如下动画: