permanente drawing op een TabPage

Status
Niet open voor verdere reacties.

ifstatement

Gebruiker
Lid geworden
16 apr 2012
Berichten
91
Beste iedereen,

Ik heb een applicatie waarin een drawing wordt gemaakt op een tabPage in een tabControl. Hieronder is een simpel voorbeeld hiervan te zien met een button.

private void button1_Click(object sender, EventArgs e)
{
Graphics Tekenblad = this.tabPage1.CreateGraphics();
Pen Tekenpen = new Pen(Color.Black, 1.0f);

Tekenblad.DrawLine(Tekenpen, 10, 10, 20, 20);
}

Als ik nu naar een andere tabPage ga, moet de tekenopdracht opnieuw uitgevoerd worden. Echter wil ik dat deze tekening permanent op deze tabPage blijft staan. Is dit mogelijk? En is het daarnaast mogelijk om de tabPage vaker als Graphic te gebruiken, zodat andere tekeningen met Clear() wel verwijdert kunnen worden?

Ik hoop dat de vraag duidelijk is!
Alvast bedankt!
 
Als je een de draw aan het Paint event van de tabpage hangt krijg je denk ik het gewenste effect

Code:
tabPage1.Paint += new PaintEventHandler(tabPage1_Paint);

Code:
void tabPage1_Paint(object sender, PaintEventArgs e)
{
    var gfx = e.Graphics;
    var pen = new Pen(Color.Red, 1);

    gfx.DrawLine(pen, 10, 10, 50, 50);

    pen.Dispose();
}
 
Ik blijf hetzelfde probleem toch houden, als ik van tabblad wissel verdwijnt de drawing.
Daarnaast tekent hij niet op de regel tabPage1.Paint += new PaintEventHandler(tabPage1_Paint);, maar op het moment dat het tabPage1 geselecteerd wordt. Er is ook geen enter-event in het programma. Simpel heb ik dit:

private void Chckbx_CheckedChanged(object sender, EventArgs e)
{

TabCont.SelectTab(1);
Teken();
}

Teken()
{
MessageBox.Show("teken");
tabPage1.Paint += new PaintEventHandler(tabPage1_Paint);
}

void tabPage1_Paint(object sender, PaintEventArgs e)
{
var gfx = e.Graphics;
var pen = new Pen(Color.Red, 1);

gfx.DrawLine(pen, 10, 10, 50, 50);

}


Hij selecteert nu tabPage1, tekent de drawing en geeft daarna pas de messagebox. Wat doe ik fout?
Bedankt!
 
Je hoeft maar 1x de event handler aan te maken (bv in de constructor van je form).
Telkens wanneer de je tab selecteert zal het paint event worden aangeroepen en uitvoeren wat je daar in hebt staan.

Omdat je SelectTab(1) gebruikt voor je de method Teken gebruikt zal de messagebox erna verschijnen.

(Ik kan wel een voorbeeldje maken als je dat handig zou vinden)
 
Okay, ik denk dat ik hem wel door heb, bedankt! Is het dan mogelijk om naast dat PaintEvent nog zaken op de tabPage erbij te tekenen met
Graphics Tekenblad = this.tabPage1.CreateGraphics()? Een voorbeeldje zou inderdaad wel handig zijn:).
 
Hier is een voorbeeld project

http://dl.dropbox.com/u/63676419/TabDrawing.zip

rms6r5.jpg
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan