Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako dodati ikonu u MenuItem? (C#)

[es] :: .NET :: .NET Desktop razvoj :: Kako dodati ikonu u MenuItem? (C#)

[ Pregleda: 3415 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bacter
bih

Član broj: 21500
Poruke: 17
*.as54.ze.bih.net.ba.



Profil

icon Kako dodati ikonu u MenuItem? (C#)17.12.2004. u 22:22 - pre 235 meseci
Programirao sam aplikaciju u kojoj bi trebao koristiti ikone unutar menija, pored teksta, tacnije ispred teksta MenuItem-a. U MenuItem members nema opcije za dodavanje ikone pa me zanima da li neko od Vas zna kako da smjestim te ikone.
Bio bi koristan i link ako ne moze objasnjenje, engleski jezik nije problem.
Hvala unaprijed!
_bacter
 
Odgovor na temu

m.petrovic
Milan Petrovic
Atina

Član broj: 41002
Poruke: 122
*.nat-pool.bgd.sbb.co.yu.



+2 Profil

icon Re: Kako dodati ikonu u MenuItem? (C#)18.12.2004. u 00:07 - pre 235 meseci
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...


Never argue with an idiot. They
will drag you down to their level, then
beat you with
experience.


Milan
Petrovic | Blog
 
Odgovor na temu

NeznamTkoSam

Član broj: 39660
Poruke: 279
*.cmu.carnet.hr.



Profil

icon Re: Kako dodati ikonu u MenuItem? (C#)18.12.2004. u 16:47 - pre 235 meseci
http://www.codeproject.com/vb/net/vsnetstylemenusvb.asp
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Kako dodati ikonu u MenuItem? (C#)

[ Pregleda: 3415 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.