2017-03-29 1 views
2

L'article suivant explique comment utiliser l'icône animée intégrée VS dans la barre d'état.Image animée dans la barre d'état Visual Studio

https://msdn.microsoft.com/en-us/library/bb166795.aspx

Je voudrais savoir, est-il un moyen d'inclure l'animation gif personnalisé dans la barre d'état.

L'image bitmap peut être incluse comme suit.

https://social.msdn.microsoft.com/Forums/vstudio/en-US/fef208e7-b79d-4a0c-94fe-e6861196e1f5/how-to-show-my-icon-in-exp-visutal-stufo-statusbarsvsstatusbar?forum=vsx#ba47b61c-77a8-46c8-aa10-a04211312e6c

Quand je signale une image gif selon l'exemple ci-dessus, l'animation ne se produit pas. S'il vous plaît aider.

Répondre

2

Il n'y a aucun moyen d'utiliser une image d'animation GIF directement autant que je sache.

Tout comme la méthode IVsStatusbar.Animation mentionné:

[en] Si la VARIANT est un VT_I2, il fait référence à la SBAI_Index de icônes animées prédéfinies. Si ce paramètre est un VT_I4, il fait référence à un HBITMAP contenant l'image de bande de film pour l'animation, dont la largeur devrait être un multiple de sa hauteur.

Vous pouvez convertir votre fichier GIF à une image BMP dont la largeur est un multiple de sa hauteur par copier et coller chaque image de l'image GIF dans le fichier BMP, puis utiliser le code fourni dans le second lien vous avez parlé à.

Par exemple, voici une image BMP j'ai créé qui contient 5 images pour l'animation:

enter image description here

Enregistrer cette image sous forme de fichier BMP, utilisez le code dans le second lien et déboguer:

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); 

Vous verrez l'animation dans Visual studio comme suit: enter image description here