Rysowanie wykresu funkcji.

0

Witam. Próbuję napisać program, który po kliknięciu na przycisk narysuje określony wykres funkcji. Używam do tego funkcji Graphics.DrawCurve(), gdyż takie dostałem zalecenie od nauczyciela. Jednyne co udało mi się do tej pory uzyskać to wykres funkcji, który rysuje się na Form'ie zaraz po uruchomieniu programu. Kod programu:

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Paint += new PaintEventHandler(Chart_Draw);
        }
        private void Chart_Draw(object sender, PaintEventArgs e)
        {
            Pen penCurrent = new Pen(Color.Red);
            Point[] pt = { new Point( 0,  0),
	              new Point(100, 100),
                  new Point(150, 50),
	              new Point(200, 0) };

            e.Graphics.DrawCurve(penCurrent, pt);
        }
       }

Przy próbie wrzucenia polecenia

 Paint += new PaintEventHandler(Chart_Draw);

do funkcji kliknięcia przycisku nie dzieje się nic. Co robię źle ?

0

To zostaw tak jak jest, a do obsługi kliknięcia przycisku wstaw this.Invalidate();, spowoduje to odrysowanie całej formy.

0

Wielkie dzięki. Działa jak chciałem :)

Przepraszam, że post pod postem, ale mam jeszcze jedno pytanie. Czy jest jakaś możliwość wyczyszczenia Form'a i przywrócenia do wyglądu sprzed rysowania funkcji ? Teraz napisałem program dzięki, któremu można narysować dwie różne funkcje, jednak po narysowaniu pierwszej i kliknięciu na przycisk od rysowania drugiej funkcje nakładją się.

0

Nie rysuj na Formie tylko na Bitmapie, którą wyświetlisz w PictureBoxie. Gdy będziesz chciał narysować nową funkcję, to weźmiesz nową Bitmapę.

0

Ok, dziekuję za odpowiedź. Jednakże, jestem dopiero początkujący i proszę o pomoc w stworzeniu takiej funkcji, tzn. rysowania na bitmapie. Wystarczy jakiś bardzo prosty wzór, bo nie wiem jak to zastosować. Jedynie z tego co przeczytałem na MSDN to do bitmapy można wprowadzać string, obrazek, ale nie ma tam nic o rysowaniu na bitmapie.

0
Mustaff napisał(a)

Ok, dziekuję za odpowiedź. Jednakże, jestem dopiero początkujący i proszę o pomoc w stworzeniu takiej funkcji, tzn. rysowania na bitmapie. Wystarczy jakiś bardzo prosty wzór, bo nie wiem jak to zastosować. Jedynie z tego co przeczytałem na MSDN to do bitmapy można wprowadzać string, obrazek, ale nie ma tam nic o rysowaniu na bitmapie.

	Bitmap img1 = new Bitmap(Picturebox1.Width, Picturebox1.Height);
        Graphics g = Graphics.FromImage(img1);
        Picturebox1.BackgroundImage = img1;
	g.DrawCurve(...);

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