Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 4.117 pregleda

Najnovija ↓

Kako dodati ikonu u MenuItem? (C#) 17.12.2004. u 23:22 · pre 266 meseci #1
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!
Potpis
_bacter
Re: Kako dodati ikonu u MenuItem? (C#) 18.12.2004. u 01:07 · pre 266 meseci #2
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme