Rysowanie w PictureBox - WFA

0

Witam!
Potrzebuje w mojej aplikacji narysowac w polu pictureBox cos na ksztalt schematu/wykresu.

Zalaczam wzor:

http://yfrog.com/evs75rj

Oczywiscie najpierw wyskakuje ta pierwsza linijka, nastepnie kolejna i kolejna po nacisnieciu odpowiednich buttonow. Z tym to akurat pewnie sobie poradze, ale prosze o pomoc w narysowaniu tego schematu i odpowiedni kod.
Dzieki z gory!

0

EventArgs zdarzenia OnPaint Picturebox'a ma składową Graphics, poszukaj czegoś o tej klasie. Tobie będą potrzebne głównie metody DrawString, DrawRectangle, DrawLine.

0
adams85 napisał(a)

EventArgs zdarzenia OnPaint Picturebox'a ma składową Graphics, poszukaj czegoś o tej klasie. Tobie będą potrzebne głównie metody DrawString, DrawRectangle, DrawLine.

Moglbys podeslac jakas linijke kodu, jak mogloby to wygladac ?
Nie wiem jak sie za to zabrac. W ktorym miejscu wstawic ten kod ?

1

klikasz na panel i w zakładce wybierasz zdarzeie Paint. Dostajesz (+/-) taki kod:

PictureBox1_Paint(object sender, PaintEventArgs e)
{
    // ...
}

i teraz piszesz w środku funkcji np.

Graphics g = e.Graphics; // Tworzysz zmienną grafiki - nazywamy ją na przykład g.
Pen p = new Pen(Color.Black); // Tworzysz tzw. pióro (Pen) - jest ono używane do kreślenia linii.
g.DrawLine(p, 20, 30, 40, 50); // Rysujesz linię.
Brush b = Brushes.Red; // Tworzysz pędzel - używany do wypełniania.
g.FillEllipse(b, 70, 90, 20, 50); // Wypełniasz elipsę za pomocą pędzla.

Nie będę się tutaj rozpisywał strasznie na ten temat, bo jest pełno tutoriali w internecie na ten temat. Spróbuj, jeśli będziesz miał jakieś problemy to napisz :)

0

korzystalem niedawno z darmowej biblioteki Netron chyba ver 2009. Calkiem przyjemnie sie nią grafy rysowało, wiec jesli nie musisz rysowac tego faktycznie calkowicie samodzielnie -> http://www.orbifold.net/default/?page_id=1272

0
MSM napisał(a)

klikasz na panel i w zakładce wybierasz zdarzeie Paint. Dostajesz (+/-) taki kod:

PictureBox1_Paint(object sender, PaintEventArgs e)
{
    // ...
}

i teraz piszesz w środku funkcji np.

Graphics g = e.Graphics; // Tworzysz zmienną grafiki - nazywamy ją na przykład g.
Pen p = new Pen(Color.Black); // Tworzysz tzw. pióro (Pen) - jest ono używane do kreślenia linii.
g.DrawLine(p, 20, 30, 40, 50); // Rysujesz linię.
Brush b = Brushes.Red; // Tworzysz pędzel - używany do wypełniania.
g.FillEllipse(b, 70, 90, 20, 50); // Wypełniasz elipsę za pomocą pędzla.

Nie będę się tutaj rozpisywał strasznie na ten temat, bo jest pełno tutoriali w internecie na ten temat. Spróbuj, jeśli będziesz miał jakieś problemy to napisz :)

Ten przyklad ma pewne bledy.
Co to jest literka "e" po zadeklarowaniu Graphics g ?
Trzeba sie jej pozbyc. Pozniej z kolei nie jest zadeklarowana zmienna g. Dodaje taka linie:
g = Graphics.FromImage(pictureBox1.Image);
i wtedy dziala, ale z kolei wyskakuje blad po nacisnieciu buttona, ktory powinien umiescic w polu dana grafike. Sprawdzalem kod z innej strony, ale bardzo podobny:

Graphics g;
            pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            g = Graphics.FromImage(pictureBox1.Image);
            g.FillRectangle(Brushes.Brown, 20, 30, 40, 50);
            g.DrawLine(Pens.Red, 0, 0, 100, 100);

i on dziala.

0
quetzalcoatl napisał(a)

korzystalem niedawno z darmowej biblioteki Netron chyba ver 2009. Calkiem przyjemnie sie nią grafy rysowało, wiec jesli nie musisz rysowac tego faktycznie calkowicie samodzielnie -> http://www.orbifold.net/default/?page_id=1272

Jak uzyc tego programu?
Nie wiem jak sie za niego zabrac...

1

Ten przyklad ma pewne bledy.
Co to jest literka "e" po zadeklarowaniu Graphics g ?

lol...

PictureBox1_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
}

'e' masz w parametrze.

Jak uzyc tego programu?

Najpierw dodaj referencję do projektu a później zobacz co ci wyjdzie ;)

0
MSM napisał(a)

Ten przyklad ma pewne bledy.
Co to jest literka "e" po zadeklarowaniu Graphics g ?

lol...

PictureBox1_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
}

'e' masz w parametrze.

Przepraszam, nie chodzilo o brak e, tylko taki blad wyskakiwal:

'System.EventArgs' does not contain a definition for 'Graphics' and no extension method 'Graphics' accepting a first argument of type 'System.EventArgs' could be found (are you missing a using directive or an assembly reference?)

i dalej

Najpierw dodaj referencję do projektu a później zobacz co ci wyjdzie

Co to znaczy ? Nie znam sie tak dobrze na C#, wiec nie wiele mi to mowi :)

0

jesli chodzi o netron, zerknij do przykaldow.. z tego co pamietam biblioteka przychodzi z kilkoma 'samplami' razem z kodem zrodlowym i jej uzycie do rysowania bylo w miare lopatologiczne - polozyc kontrolke, dodac wezly i krawedzie, wybrac layout i juz

1

Jeśli chodzi o netrona to sobie poradzisz :)

I żeby parę nieścisłości rozwiać:

'System.EventArgs' does not contain a definition for 'Graphics' and no extension method 'Graphics' accepting a first argument of type 'System.EventArgs' could be found (are you missing a using directive or an assembly reference?)

To znaczy że zamiast
pictureBox1_Paint(object sender, PaintEventArgs e)
miałeś
pictureBox1_Paint(object sender, EventArgs e)
jesteś pewien że liknąłeś na "paint"?

Ew. zawsze można w nic nie klikać, tylko napisać w konstruktorze (public Form1())
this.pictureBox1.Paint += new PaintEventHandler(pictureBox1_Paint);

1 użytkowników online, w tym zalogowanych: 0, gości: 1