Diskuze: Jak udělát z pictureboxu button?

C# .NET .NET (C# a Visual Basic) Jak udělát z pictureboxu button? American English version English version

Aktivity (1)
Avatar
michaelbeats7:14.2.2015 16:22

Mám picturebox viz. obrázek a chci aby 1 byl jeden button, 2 další button a takhle všechno.. Jak na to?

 
Odpovědět 14.2.2015 16:22
Avatar
Tomáš "CrashTest" Bitter:14.2.2015 16:44

Popiš to více ... (kde ty buttony mají být, jak mají vypadat ...)

Nahoru Odpovědět  -3 14.2.2015 16:44
Need for Steve
Avatar
michaelbeats7:14.2.2015 16:54

vidiš ten obrázek? jak tam jsou čísla.. tak aby každy číslo byl jeden button ... aby to vypadalo přes takhle

 
Nahoru Odpovědět 14.2.2015 16:54
Avatar
Odpovídá na michaelbeats7
sadlomaslox25:14.2.2015 16:54

jedna se o WPF nebo Winforms?

 
Nahoru Odpovědět 14.2.2015 16:54
Avatar
Odpovídá na sadlomaslox25
michaelbeats7:14.2.2015 16:56

Vypadá to takhle

 
Nahoru Odpovědět 14.2.2015 16:56
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na michaelbeats7
Jan Vargovský:14.2.2015 17:15

Urči si střed, velikost buttonu a pak použij trošku matiky.

 
Nahoru Odpovědět 14.2.2015 17:15
Avatar
Odpovídá na Jan Vargovský
michaelbeats7:14.2.2015 17:25

No ale když dam visible false, tak to pak nefunguje

Editováno 14.2.2015 17:26
 
Nahoru Odpovědět 14.2.2015 17:25
Avatar
Jan Vargovský
Redaktor
Avatar
 
Nahoru Odpovědět 14.2.2015 17:35
Avatar
Odpovídá na michaelbeats7
sadlomaslox25:14.2.2015 18:30

musis si udelat odvozenou tridu button a v nem overidovat metodu onpaint. neco jako:

public class HexaButton : Button
{
    protected override void OnPaint(PaintEventArgs pevent)
    {
        using (var gp = new GraphicsPath())
        {
            gp.AddPolygon(Enumerable
                .Range(1, 6)
                .Select(o =>
                    new Point(
                        (int) Math.Round(20*Math.Sin(2*Math.PI*o/6)) + 50,
                        (int) Math.Round(20*Math.Cos(2*Math.PI*o/6)) + 50))
                .ToArray());


            Region = new Region(gp);
            pevent.Graphics.FillPath(Brushes.Silver, gp);
            pevent.Graphics.DrawString("1", DefaultFont, Brushes.Black, new PointF(45, 45));
        }

    }
}
 
Nahoru Odpovědět 14.2.2015 18:30
Avatar
rwn
Člen
Avatar
Odpovídá na michaelbeats7
rwn:14.2.2015 19:05

Mám lepší nápad na řešení. Tenhle obrázek si udělej bez té "pyramidy" vykresli si jednotlivé šestiúhelníky jeden po jednom na dané pozici - každému šestiúhelníku udělej událost na kliknutí a máš vyřešeno vše a jednoduše. :)

Nahoru Odpovědět 14.2.2015 19:05
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Odpovídá na rwn
sadlomaslox25:14.2.2015 19:15

podle me se tam budou prekryvat hitboxy protoze podle me picture box nebude podporovat ignorovani mouse eventu pro transparentni barvy.

 
Nahoru Odpovědět 14.2.2015 19:15
Avatar
rwn
Člen
Avatar
Odpovídá na sadlomaslox25
rwn:14.2.2015 22:35

když tomu tvému geometrickému útvaru nastavíš událost tak to bude fungovat v pohodě :) a hlavně to budeš moc celou pyramidu vykreslit cyklem..

Nahoru Odpovědět 14.2.2015 22:35
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Adam Ježek:17.2.2015 16:06

http://www.itnetwork.cz/…indows-forms
http://www.itnetwork.cz/…e-picturebox

jen tam nejsou šetiúhelníky ale čtverce, ale s trochou přemejšlení to nebude problém

Nahoru Odpovědět 17.2.2015 16:06
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.