Gå til innhold

hvordan lage tegneprogram...


Anbefalte innlegg

hei,

 

jeg skal lage et veldig enkelt tegneprogram i vb.net, men aner ikke hvordan jeg skal gå frem siden jeg aldri har laget noe lignende før.

 

er det noen som kan gi meg noen tips til hvilke klasser jeg bør bruke og gi meg noen gode forslag til hvordan jeg skal gjøre dette?

 

jeg tenkte at det kanskje gikk an å laste inn ms paint som et com-object, men fant ikke helt ut av om det går, eller hvordan det evt kan gjøres.

 

tips mottas med stor takk

Lenke til kommentar
Videoannonse
Annonse

Lim inn denne koden i et nytt prosjekt:

Private Sub form_Mousemove(Butten As Integer, Shift As Integer, X As Single, Y As Single)

If Butten = 1 Then '1 en venstreklikk

   Me.PSet (X, Y)
   
End If

End Sub

Private Sub form_load()

Me.AutoRedraw = True

Me.DrawWidth = 5

Me.ForeColor = &HFF&

End Sub

 

Edit: Vb.net ?? Ops .. :blush:

Endret av Jonas
Lenke til kommentar

Det er antagentlig mulig å legge en referanse til Paint programmet, mest sannsynlig med OLED, da dette var veien å gå med VB6. Men jeg vil tro du vil tjene mer ved å lage koden selv. Følgende kode er et eksempel på hva du kan gjøre, og som du kan jobbe videre med:

 

   Dim lastX As Int16, lastY As Int16

   ' Autoredraw eksisterer ikke lenger i VB.NET, så vi må gjøre alt manuelt
   Dim Bitmap As System.Drawing.Bitmap

   Private Sub picPaint_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picPaint.MouseDown
       lastX = e.X
       lastY = e.Y
   End Sub

   Private Sub picPaint_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picPaint.MouseMove
       If e.Button = Windows.Forms.MouseButtons.Left Then

           Dim g As Graphics = Graphics.FromImage(Bitmap)

           g.DrawLine(Pens.Black, e.X, e.Y, lastX, lastY)
           picPaint.Image = Bitmap
           g.Dispose()

           lastX = e.X
           lastY = e.Y
       End If
   End Sub

   Private Sub picPaint_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles picPaint.Paint
       e.Graphics.DrawImage(Bitmap, 0, 0)
   End Sub

   Private Sub picPaint_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles picPaint.Resize
       Bitmap = New System.Drawing.Bitmap(picPaint.Width, picPaint.Height)
   End Sub

Lenke til kommentar

takk for den koden aadnk, det var akkurat noe slikt jeg var ute etter. jeg lurer imidlertid litt på om det finnes noen enkel måte å lage rektangler og ellipser på også, vha musa slik at jeg slipper å skrive inn drawrectangle(x,y,n,m) osv....eller må jeg da lage en metode for dette selv?

Lenke til kommentar
   Private Sub DrawRects(ByVal g As Graphics)
       Dim r As Rectangle
       r = Me.RectangleToClient(New Rectangle(Me.MousePosition.X - 16, Me.MousePosition.Y - 16, 32, 32))
       g.DrawRectangle(Pens.Black, r)
   End Sub

   Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
       DrawRects(Me.CreateGraphics())
   End Sub

Lenke til kommentar
Lim inn denne koden i et nytt prosjekt:

Private Sub form_Mousemove(Butten As Integer, Shift As Integer, X As Single, Y As Single)

If Butten = 1 Then '1 en venstreklikk

   Me.PSet (X, Y)
   
End If

End Sub

Private Sub form_load()

Me.AutoRedraw = True

Me.DrawWidth = 5

Me.ForeColor = &HFF&

End Sub

 

Edit: Vb.net ?? Ops .. :blush:

Jævlig bra! Tusen takk, Jonas! :thumbup:

Lenke til kommentar
...men bytt ut PSet med line så tenker jeg det ser bedre ut.

Uten å en pset ved klikk ser også line ganske dumt ut. Slik ser ikke dumt ut:

Private Sub form_Mousemove(Butten As Integer, Shift As Integer, X As Single, Y As Single)

If Butten = 1 Then '1 en venstreklikk

  Me.Line -(X, Y)
  
End If

End Sub

Private Sub form_Mousedown(Butten As Integer, Shift As Integer, X As Single, Y As Single)

If Butten = 1 Then '1 en venstreklikk

  Me.PSet (X, Y)
  
End If

End Sub

Private Sub form_load()

Me.AutoRedraw = True

Me.DrawWidth = 5

Me.ForeColor = &HFF&

End Sub

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...