Pojawienie się prostokąta w PictureBox, dopiero po kliknięciu w Button

0

Chcę żeby na pictureboxie pojawił się prostokąt, ale dopiero wtedy, gdy kliknę w button. Kłopot w tym,że gryzą mi się eventy args z paintargs.

Czy wie ktoś może jak to rozwiązać?

0

Sory wielkie za ten bałagan w kodzie, ale od dwóch godzin tak eksperymentuje, że nie wiem.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ruchome_figury
{
    public partial class Form1 : Form
    {
        Kwadrat bs_kwadrat = new Kwadrat(20, 20, 200, 200, Color.Red, DashStyle.Solid, 1, true);
        public Form1()
        {
            InitializeComponent();
         }
        //początek klasy kwadrat
         public class Kwadrat
        {
            int bs_x, bs_y;
            int bs_width;
            int bs_height;
            Color bs_Kolor;
            Pen bs_pioro;
            DashStyle bs_Rodzaj_linii;
            int bs_grubosc;
            bool bs_widoczny;

            // to dziala
            public Kwadrat(int x, int y,int bs_width,int bs_height,Color bs_Kolor,DashStyle bs_Rodzaj_linii,int bs_grubosc,bool bs_widoczny)
            {
                this.bs_x = x;
                this.bs_y = y;
                this.bs_width=bs_width;
                this.bs_height = bs_height;
                this.bs_Kolor = bs_Kolor;
                this.bs_Rodzaj_linii = bs_Rodzaj_linii;
                this.bs_grubosc =bs_grubosc;
                this.bs_widoczny = bs_widoczny;
                bs_pioro = new Pen(bs_Kolor, bs_grubosc);
            }
           //to dziala
            public void ustaw_xy(int x, int y)
            {
                this.bs_x = x;
                this.bs_y = y;
            }
            //to dziala super
            public void bs_narysuj(PaintEventArgs k)
            {
                //jak tutaj daje te linie to po uruchamieniu mam prostokąt od razu widoczny, a ja bym chciał go zobaczy dopiero po kliknięciu w przycisk;
                  k.Graphics.DrawRectangle(bs_pioro,bs_x,bs_y,bs_width,bs_height);
            }
         }
         ***************tu jest lipa************
            private void bs_rysuj_kwadrat_Click(object sender, EventArgs e,PaintEventArgs k)
            {
                Graphics rysownica = this.bs_plotno.CreateGraphics();
                bs_plotno.Image = new Bitmap(400,400);
                rysownica = Graphics.FromImage(bs_plotno.Image);
                
                //jesli te linie wrzucam tutaj, to po prostu po klikniętu w button, nie pojawia się kwadrat
                k.Graphics.DrawRectangle(bs_pioro,bs_x,bs_y,bs_width,bs_height);
                
            }
        

             private void bs_plotno_Paint(object sender, PaintEventArgs k)
             {
                 bs_kwadrat.bs_narysuj(k);
                 
              }
         }
}
0

Może jakieś objaśnienie? Co nie działa?

0

dam1an W mailu pojawił mi sę od ciebie fragment odpowiedzi, którego nie widzę tutaj. Dziwne.

0
            private void bs_rysuj_kwadrat_Click(object sender, EventArgs e,PaintEventArgs k)
            {
                Graphics rysownica = this.bs_plotno.CreateGraphics();
                bs_plotno.Image = new Bitmap(400,400);
                rysownica = Graphics.FromImage(bs_plotno.Image);
 
                //jesli te linie wrzucam tutaj, to po prostu po klikniętu w button, nie pojawia się kwadrat
                k.Graphics.DrawRectangle(bs_pioro,bs_x,bs_y,bs_width,bs_height);
 
            }

To wyżej to jest handler od kliknięcia w button? Skąd tam się wziął ten trzeci argument?

Spróbuj tak:

MyButtonClick(object sender, EventArgs e)
{
    Graphics rysownica = this.bs_plotno.CreateGraphics();
    rysownica.Graphics.DrawRectangle(bs_pioro,bs_x,bs_y,bs_width,bs_height);
}

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