' benoetigt:
' - 4 CommandButtons (Command1 ... Command4)
' - 1 Picture
Option Explicit
Private MouseFlag As Boolean
Private FigureFlag As String
Private x_Hilf#, y_Hilf#
Private Farbe As Long
Private Sub Form_Load()
Command1.Caption = "Kreis": Command1.Width = 1000
Command2.Caption = "Linie": Command2.Width = 1000
Command3.Caption = "Rechteck": Command3.Width = 1000
Command4.Caption = "CLS": Command4.Width = 1000
Picture1.ScaleMode = vbPixels
Picture1.AutoRedraw = True
Farbe = vbRed
End Sub
Private Sub Form_Resize()
Dim Rand#
Rand = Me.ScaleHeight * 0.02
' Buttons ausrichten
Command1.Top = Rand
Command1.Left = Me.ScaleWidth - Me.Command1.Width - Rand
Command2.Top = Command1.Top + Command1.Height + Rand
Command2.Left = Command1.Left
Command3.Top = Command2.Top + Command2.Height + Rand
Command3.Left = Command2.Left
Command4.Top = Command3.Top + Command3.Height + Rand
Command4.Left = Command3.Left
' Picture ausrichten
Picture1.Left = Rand
Picture1.Top = Rand
Picture1.Width = Command1.Left - 2 * Rand
Picture1.Height = Me.ScaleHeight - 2 * Rand
End Sub
Private Sub Command1_Click()
FigureFlag = "Kreis"
MouseFlag = False
End Sub
Private Sub Command2_Click()
FigureFlag = "Linie"
MouseFlag = False
End Sub
Private Sub Command3_Click()
FigureFlag = "Rechteck"
MouseFlag = False
End Sub
Private Sub Command4_Click()
Picture1.Cls
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As _
Single, Y As Single)
If Button = 1 Then
Select Case FigureFlag
Case Is = "Kreis"
Call zeichne_Kreis(X, Y)
Case Is = "Linie"
Call zeichne_Linie(X, Y)
Case Is = "Rechteck"
Call zeichne_Rechteck(X, Y)
End Select
End If
End Sub
Private Sub zeichne_Kreis(mx, my)
Dim Radius#
If MouseFlag = False Then
Picture1.PSet (mx, my), Farbe
x_Hilf = mx: y_Hilf = my
MouseFlag = Not (MouseFlag)
Else
Radius = Sqr((mx - x_Hilf) ^ 2 + (my - y_Hilf) ^ 2)
Picture1.Circle (x_Hilf, y_Hilf), Radius, Farbe
MouseFlag = Not (MouseFlag)
FigureFlag = ""
End If
End Sub
Private Sub zeichne_Linie(mx, my)
If MouseFlag = False Then
Picture1.PSet (mx, my), Farbe
x_Hilf = mx: y_Hilf = my
MouseFlag = Not (MouseFlag)
Else
Picture1.Line (mx, my)-(x_Hilf, y_Hilf), Farbe
MouseFlag = Not (MouseFlag)
FigureFlag = ""
End If
End Sub
Private Sub zeichne_Rechteck(mx, my)
If MouseFlag = False Then
Picture1.PSet (mx, my), Farbe
x_Hilf = mx: y_Hilf = my
MouseFlag = Not (MouseFlag)
Else
Picture1.Line (mx, my)-(x_Hilf, y_Hilf), Farbe, BF
MouseFlag = Not (MouseFlag)
FigureFlag = ""
End If
End Sub ok, ist nicht ganz die Musterloesung fuer diese Aufgabe. Schmeiss den ueberfluessigen Code einfach raus.
Gru |