[c#.net] paint functie

Pagina: 1
Acties:

  • ungarmax
  • Registratie: December 2001
  • Laatst online: 29-06-2021
Ik ben al een tijdje bezig met een simpele paint functie aan de praat te krijgen.
Het is de bedoeling dat er eert op een knop wordt gedrukt en dat er dan een test rectangle wordt getekend. Ik heb in mijn boeken gekeken en op internet wat voorbeelden opgezocht en volgens die voorbeelden doe ik het goed, toch verschijnt er niets op het scherm. Hebben jullie enig idee?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
static void Main() {
Application.Run(new fHoofdveld());}

private void bBerekenImage_Click(object sender, System.EventArgs e) {
Image.berekenKleur();
textBox1.Visible=true; //doet de button het uberhaupt wel
textBox1.Text="yes"; //ja dus
this.Refresh(); //dit schijnt niet te werken
}

public void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e){
Pen penBlack = new Pen(System.Drawing.Color.Black, 3);
e.Graphics.DrawRectangle(penBlack,20,30,150,250);}

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:46
De OnPaint eventhandler wordt uitgevoerd als je window opnieuw zichtbaar wordt, of als er gedeeltes van je window opnieuw zichtbaar worden.

Waarom zet je de code om die rectangle te tekenen in je OnPaint en niet in je ButtonClick ?

[ Voor 26% gewijzigd door whoami op 09-09-2004 16:54 ]

https://fgheysels.github.io/


  • ungarmax
  • Registratie: December 2001
  • Laatst online: 29-06-2021
omdat ik straks nog wat functies wil toevoegen aan de OnPaint functie, en die horen allemaal bijelkaar. als ik dat allemaal in de button method zet dan wordt het naar mijn mening onoverzichtelijker. (Maar je hebt op zich wel een punt) :) en ik dacht dat het niet mogelijk was om in c# direct op een form te tekenen buiten de Paint functie; vandaar dat ik het dus in de OnPaint gezet heb.

Je hebt ook gelijk met het feit dat de OnPaint method pas wordt aangeroepen als het scherm opnieuw getekend moet worden maar ik wil eigenlijk dat het scherm opnieuw wordt getekend wanneer ik dat wil. Vandaar dat ik dus refresh in de button_click method gezet heb.

[ Voor 50% gewijzigd door ungarmax op 09-09-2004 17:08 ]


  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
probeer this.Invalidate eens.

/me weet geen leuke quote voor in zijn signature


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:46
Maak dus een method waarin je al die dingen gaat gaan tekenen.
Roep die method aan als je op die Knop klikt, en roep diezelfde method ook aan in de OnPaint eventhandler.

https://fgheysels.github.io/


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 10-08 13:52

pjvandesande

GC.Collect(head);

Waarom wil je de paint doen, wat is de gedachten er achter.

OnPaint is opzich een logische funcie, en dan this.Invalidate aanroepen. Maar zo iets al dit kan natuurlijk ook:
C#:
1
2
3
4
5
6
7
8
private void paintIets()
{
    using(Graphics g = this.CreateGraphics)
    {
        // Teken een lijntje
        g.DrawLine(...);
    }
}
Pagina: 1