Gå til innhold

Anbefalte innlegg

Hei.

Har sitti her noen timer med og få "free drawing" (aka tegne med musa) til og fungere.

har fått til såpas at jeg klarer og tegne på en form.

men har et ønske å bare kunne tegne på et bestemt sted. eksepel i en Panel eller lignene.

 

takknemlig for all hjelp og tips.

 

mvh. vetle

Lenke til kommentar
Videoannonse
Annonse

Nå har ikke jeg brukt WinForms på en god stund, men er det ikke bare å ta graphics objektet til for eksempel et panel.

 

       //bare tegn når du holder museknappen inne, kan sikkert gjøres bedre

       private bool _canDraw = false;

       private void DrawPanel_MouseClick(object sender, MouseEventArgs e)
       {
           _canDraw = !_canDraw;
       }

       //hvor DrawPanel er et panel, kan egentlig være hva som helst nesten, 
       //husk også at X og Y er relativ til den kontrollen som musen flyttes rundt på.
       private void DrawPanel_MouseMove(object sender, MouseEventArgs e)
       {
           if(_canDraw)
           {
               //du burde dispose graphics objektet etter bruk
               using (var g = DrawPanel.CreateGraphics()) 
               {
                   g.DrawRectangle(Pens.Black, e.X, e.Y, 1, 1);
               }
           }
       }

 

edit: la til using på graphics objektet så den blir frigjort etter bruk.

Endret av Joebean
Lenke til kommentar

Burde heller tegne til et backbuffer, for så å tegne dette til vinduet ved Paint. Da slipper du CreateGraphics kallet (som du egentlig skal frigjøre med ReleaseGraphics)

CreateGraphics er tilnærmet det samme som GetDC, som må frigjøres med ReleaseDC (merk dog at dette er GDI+ og ikke GDI, så det er ikke akkurat det samme)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...