Web Analytics Assegnare immagini di formato diverso ad un comando del Ribbon - Blog di Laura Ciccarese

Blog di Laura Ciccarese

Office: un mondo da scoprire! Approfondimenti, Automation, VBA e altro ancora...

Assegnare immagini di formato diverso ad un comando del Ribbon

Oggi vorrei completare il post .NET Ribbon con il codice necessario per assegnare ad un comando del Ribbon immagini di vario formato: ico, jpg, bmp, gif, ecc.

 

Scaricate (se non l'avete già fatto Big Smile) l'applicazione allegata al post Assegnare immagini personalizzate ad un comando del Ribbon e, seguendo le istruzioni del post,  predisponete tre comandi sul tab personalizzato, e tre file di risorsa per le rispettive immagini (io ho utilizzato un file .ico, un file .gif e un file .bmp)

1. Modificare il file Ribbon1.xlm

Il file Ribbon1.xml dovrebbe avere la seguente struttura:

 

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad">

<ribbon>

<tabs>

<tab id="SchedaPersonalizzata"

label ="Laura">

<group id="Immagini"

label="Immagini aziendali"

<toggleButton id="InserisciLogo01"

size="large"

label="Inserisci Logo Ufficiale"

screentip="Inserisce il logo ufficiale in corrispondenza del cursore"

onAction="OnToggleButton"

getImage ="GetMyImage" />

<toggleButton id="InserisciLogo02"

size="large"

label="Inserisci Logo per web"

screentip="Inserisce il logo web in corrispondenza del cursore"

onAction="OnToggleButton"

getImage ="GetMyImage" />

<toggleButton id="InserisciLogo03"

size="large"

label="Inserisci Logo interno"

screentip="Inserisce il logo per la documentazione interna in corrispondenza del cursore"

onAction="OnToggleButton"

getImage ="GetMyImage" />

</group>

</tab>

</tabs>

</ribbon>

</customUI>

2. Modificare la funzione GetMyImage

Modificate la funzione GetMyImage in modo da passare l'immagine corrispondente ad  ogni controllo del Ribbon:

public stdole.IPictureDisp GetMyImage(Office.IRibbonControl control)

{

stdole.IPictureDisp pictureDisp = null;

switch (control.Id)

{

case "InserisciLogo01":

pictureDisp =

ImageConverter.Convert(GetResourceBitmap("sqltut.ico"));

break;

case "InserisciLogo02":

pictureDisp =

ImageConverter.Convert(GetResourceBitmap("Logo.bmp"));

break;

case "InserisciLogo03":

pictureDisp =

ImageConverter.Convert(GetResourceBitmap("Diavoletto.gif"));

break;

}

return pictureDisp;

}

3. Modificare la funzione GetResourceBitmap

Modificate la funzione che restituisce l'immagine in modo che gestisca la tipologia di immagini.ico separatamente dalle altre:

public static System.Drawing.Bitmap GetResourceBitmap(string resourceName)
{
Assembly asm = Assembly.GetExecutingAssembly();
string[] resources = asm.GetManifestResourceNames();
System.Drawing.Bitmap image = null;

foreach (string resource in resources)
{
if (resource.EndsWith(resourceName))
{
System.IO.Stream stream =
asm.GetManifestResourceStream(resource);
if (stream == null)
{
break;
}
string extension =
System.IO.Path.GetExtension(resourceName).ToLower();
switch (extension)
{
case ".ico":
image = new System.Drawing.Icon(stream).ToBitmap();
break;
default:
image = new System.Drawing.Bitmap(stream);
image.MakeTransparent();
break;
}
stream.Close();
break;
}
}
return image;
}

4. Provare per credere

Lanciate l'applicazione e il risultato, con le mie immagini, è il seguente:

ImmaginiVarie01

Trovate l'applicazione completa in allegato 

Chiedo ancora perdono agli utenti di Visual Basic che rimando all'articolo in uscita alla fine del mese (Embarrassed).

Ciao a tutti

Laura

Comments

donvito said:

Davvero interessante Wink Ora non ci resta che l'ansiosa attesa dell'uscita dell'articolo.

GetMyRibbon Cha Cha Cha! Big Smile

# January 25, 2007 4:18 PM

Tommaso Caldarola said:

Infatti, un po' lunghetto come post, molto meglio un articolo!!!

# January 25, 2007 4:34 PM

laura said:

Grazie a Donvito per il cha cha cha!!!

# January 25, 2007 4:39 PM