Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Ongelma piirto ohjelmassa

tuomas [01.05.2004 19:30:53]

#

Ohjelman kuuluisi piirtää aivan tavallinen viiva.
Ongelmana on että viiva piirtyy koko ajan siihen kohtaa missä kursori on.
Tuo on vielä helppo korjata mutta käyttäjän kuuluisi nähdä mistä kohdasta mihin kohtaan viiva piirretään.
Jos ette ymmärrä avatkaa paintti ja piirtäkää viiva!

Tässä olisi koodi:

'Muuttujat kursorin kohdalle
Dim KohtaX
Dim KohtaY
'Muuttujat väriarvoille
Dim R
Dim G
Dim B
'Muuttujat viivan piirtoa varten
Dim Viiva1X
Dim Viiva1Y
Dim Viiva2X
Dim Viiva2Y

'Muuttujat piirto työkaluille
Dim Viiva As Boolean
Dim Ympyrä As Boolean
Dim Kynä As Boolean
Private Sub Command1_Click()

End Sub

Private Sub Command2_Click()
Viiva = True
Kynä = False

End Sub

Private Sub MnuPoistuItem_Click()
End
End Sub

Private Sub Pencil_Click()
Kynä = True
Viiva = False

End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Jos kynä on valittuna voidaan piirtää
If Kynä = True Then
Picture1.PSet (KohtaX, KohtaY), RGB(0, 0, 0)
End If
'Asetetaan viivan aloitus kordinaatit
If Viiva = True And Button = 1 Then
Viiva1X = KohtaX
Viiva1Y = KohtaY
End If

End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Siirretään hiiren kursorin kohta muuttujiin
KohtaX = X
KohtaY = Y
'Jos Hiiren vasemman puoleinen nappi on pohjassa ja kynä on valittuna
'voidaan piirtää
If Kynä = True And Button = 1 Then
Picture1.PSet (KohtaX, KohtaY), RGB(0, 0, 0)
End If
'Näyetään käyttäjälle mistä kohdasta mihin kohtaan viiva piirtyisi
If Viiva = True And Button = 1 Then
Picture1.Line (Viiva1X, Viiva1Y)-(KohtaX, KohtaY), RGB(0, 0, 0)


End If



End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Piirretään viiva
If Viiva = True And Button = 1 Then
Viiva2X = KohtaX
Viiva2Y = KohtaY
Picture1.Line (Viiva1X, Viiva1Y)-(Viiva2X, Viiva2Y), RGB(0, 0, 0)

End If

End Sub

tarvitsee pictureboxin ja kaksi command buttonia.

setä [01.05.2004 20:09:29]

#

Koitas tätä. mulla oli sattumalta valmiina

Dim X0, Y0 As Integer 'alkupiste
Dim X1, Y1 As Integer 'kuminauhaviivan päätepiste
Dim Tila As Byte 'piirtotila

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Tila 'haaraudutaan tila-muuttujan mukaan
Case 0
  If Button = 1 Then 'vasen painike
    DrawMode = 13
    PSet (X, Y) 'aloituspiste
    X0 = X: Y0 = Y 'tallennetaan koordinaatit
    Tila = 1 'aloitustila
  End If
Case 2
  Line (X0, Y0)-(X1, Y1), &HFFFF& 'pyyhitään kuminauhaviiva
  If Button = 2 Then 'piirron lopetus
    Tila = 0
    Exit Sub 'poistutaan
  Else
    DrawMode = 13
    Line (X0, Y0)-(X, Y) 'piirretään viiva
    X0 = X: Y0 = Y 'tallennetaan koordinaatit
  End If
End Select
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Tila 'haaraudutaan tila-muuttujan mukaan
Case 0
  Exit Sub 'ei tehdä mittää
Case 1, 2 'alkutila
  If Button = 0 Then 'piirretään kuminauhaviiva
    DrawMode = 7
    If Tila = 2 Then 'pyyhitään ed. viiva
      Line (X0, Y0)-(X1, Y1), &HFFFF&
    End If
    Line (X0, Y0)-(X, Y), &HFFFF& 'uusi kuminauhaviiva
    X1 = X: Y1 = Y 'tallennetaan koordinaatit
    Tila = 2 'kuminauhatila
  Else 'piirretään jatkuvaa käyrää
    DrawMode = 13
    Line -(X, Y)
  End If 'if-rakenteen lopetus
End Select 'Select Case-rakenteen lopetus
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
  Line -(X, Y) 'viivan piirto
  X0 = X: Y0 = Y: 'tallennetaan koordinaatit
  Tila = 1
End If
End Sub

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta