Proces kreiranja menija u .Net-u nazalost ne podrzava standardno dodavanje ikona... Srecom, tu nam pomaze GDI+.
Dodavanje ikona se vrsi u tri koraka:
1. Podesi se
OwnerDraw property za stavke menija na "true". Nakon ovoga jos uvek se moze videti meni u design okruzenju i menjati se, po zelji, njegov Text property.
2. Sada moramo videti koliko nam stavke u meniju zauzimaju prostora, kako bi smo unapred planirali prostor za stavku sa slikom (handl-ujemo
MeasureItem event):
Code:
private void mnu_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
{
// kreiras mnuItem koji predstavlja trenutnu stavku u meniju
MenuItem mnuItem = (MenuItem)sender;
Font menuFont = new Font("Tahoma", 8);
// Izmeri se koliko je pixela potrebno da se prikaze tekst
// Dodamo 30 piksela (u ovom slucaju) na sirinu kako bi smo ostavili prostora za sliku
e.ItemHeight = (int)e.Graphics.MeasureString(mnuItem.Text, menuFont).Height + 5;
e.ItemWidth = (int)e.Graphics.MeasureString(mnuItem.Text, menuFont).Width + 30;
}
Mozes koristiti ovaj jedan event handler za premeravanje svih stavki, odn. ne moras da pises poseban handler za svaku stavku u meniju posebno.
3. Iscrtamo tekst i sliku (
DrawItem event):
Code:
private void mnu_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
// kreiras mnuItem koji predstavlja trenutnu stavku u meniju
MenuItem mnuItem = (MenuItem)sender;
// Ovo je za "highlighted background" ukoliko je stavka selektovana
// U suprotnom je default siva pozadina
e.DrawBackground();
// Preuzmemo sliku iz ImageList kontrole
Image menuImage = imgMenu.Images[mnuItem.Index];
// Iscrtamo sliku.
e.Graphics.DrawImage(menuImage, e.Bounds.Left + 3, e.Bounds.Top + 2);
// Iscrtamo tekst uz dodatu boju...
e.Graphics.DrawString(mnuItem.Text, e.Font, new SolidBrush(e.ForeColor), e.Bounds.Left + 25, e.Bounds.Top + 3);
}
I to je to... Nadam se da ce pomoci. Ukoliko je nesto nejasno, pitaj...
Potpis
Never argue with an idiot. They
will drag you down to their level, then
beat you with
experience.
Milan
Petrovic | Blog