Paint esemény meghívása gombbal

Paint esemény meghívása gombbal
2017-07-23T17:02:34+02:00
2017-07-23T22:45:37+02:00
2022-12-04T16:45:42+01:00
anclung
Az alábbi programban a Paint esemény kirajzol egy kört, majd ezt követően egy gomb megnyomására megváltoztatja a középpont koordinátáit, és kirajzolja az új kört.

A kérdésem, hogy miként lehet megoldani, hogy a képernyőre csak a gomb lenyomására rajzoljon kört (vagy bármit), vagyis a Paint esemény az elején ne váltódjon ki automatikusan, hanem majd csak a gomb lenyomására.
public partial class Form1 : Form { int x = 40; int y = 60; public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics graphics = e.Graphics; graphics.DrawEllipse(Pens.Blue, x, y, 60, 60); } private void button1_Click_1(object sender, EventArgs e) { x = 100; y = 150; Invalidate(); } }
Mutasd a teljes hozzászólást!
public partial class Form1 : Form { bool kellrajzolni=false; // <----- uj1 int x = 40; int y = 60; public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e) { if(kellrajzolni) // <---- uj2 { // <---- uj3 Graphics graphics = e.Graphics; graphics.DrawEllipse(Pens.Blue, x, y, 60, 60); } // <---- uj4 } private void button1_Click_1(object sender, EventArgs e) { x = 100; y = 150; kellrajzolni=true; // <---- uj5 Invalidate(); } }
uj1...uj5-tel bejelölve az új sorok
Mutasd a teljes hozzászólást!

  • Próbáld ki a következő kódot, ez közvetlenül a formra fogja rajzolni a kört, de csak a gombra kattintás esemény hatására. 

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication2 { public partial class Form1 : Form { Graphics graphics; public Form1() { InitializeComponent(); } void rajzolKor(int x,int y) { graphics = this.CreateGraphics(); graphics.DrawEllipse(Pens.Blue, x, y, 60, 60); } private void button1_Click(object sender, EventArgs e) { int x = 80; int y = 80; rajzolKor(x,y); } } }
    Mutasd a teljes hozzászólást!
  • public partial class Form1 : Form { bool kellrajzolni=false; // <----- uj1 int x = 40; int y = 60; public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e) { if(kellrajzolni) // <---- uj2 { // <---- uj3 Graphics graphics = e.Graphics; graphics.DrawEllipse(Pens.Blue, x, y, 60, 60); } // <---- uj4 } private void button1_Click_1(object sender, EventArgs e) { x = 100; y = 150; kellrajzolni=true; // <---- uj5 Invalidate(); } }
    uj1...uj5-tel bejelölve az új sorok
    Mutasd a teljes hozzászólást!
  • Köszönöm a részletes segítséget. Az a helyzet, hogy erre a megoldásra én is gondoltam, csak valahogy azt hittem, hogy meg lehet oldani közvetlen paranccsal is, hogy a Paint esemény ne fusson le a form betöltésekor.

    (Sugamnak is köszönöm a segítségét, ő nyilván nem olvasta a korábbi kérdésfeltevésemet, melyhez leírtad, hogy a Paint eseményt nem igazán illik megkerülni rajzoláskor.)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd