Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Visual Studio状态栏中的动画图像_Visual Studio_Visual Studio Extensions_Vsix - Fatal编程技术网

Visual studio Visual Studio状态栏中的动画图像

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图像的每一帧,然后使用您提到的第

下面的文章解释了如何在状态栏中使用内置VS动画图标

我想知道,有没有办法在状态栏中包含自定义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中看到如下动画: