Hallo Andi,
ich meinte nicht, das Du das 1:1 übernehmen kannst, sondern das Du nach dem
verwendeten Verfahren vorgehen sollst. Probier mal dieses:
Option Explicit
'Benötigt werden 2 Pictureboxen.
Private Type PointAPI
X As Long
Y As Long
End Type
Private Declare Function Polygon& Lib "gdi32" (ByVal hdc&, _
lpPoint As PointAPI, ByVal nCount&)
Private Sub Form_Activate()
Dim i%, j%, Breite%, Höhe&, PX%(3), PY%(3), Pi!
Dim Fgr(3) As PointAPI, Wnk1!, XOff%, YOff%
Me.WindowState = vbMaximized
Me.ScaleMode = vbPixels
Breite = 60
Höhe = 40
For i = 0 To 1
For j = 0 To 1
PX(2 * i + j) = Breite * i - Breite \ 2
PY(2 * i + j) = Höhe * (i Xor j) - Höhe \ 2
Next j
Next i
Pi = 4 * Atn(1)
Randomize
With Picture2
.Visible = False
.ScaleMode = vbPixels
.AutoRedraw = True
.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
.BackColor = vbBlack
.FillStyle = 0
End With
With Picture1
.ScaleMode = vbPixels
.AutoRedraw = True
.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
.BackColor = vbBlack
.FillStyle = 0
For i = 1 To 30
XOff = Breite + Rnd * (.ScaleWidth - 2 * Breite)
YOff = Breite + Rnd * (.ScaleHeight - 2 * Breite)
Wnk1 = Rnd * 2 * Pi
For j = 0 To 3
Fgr(j).X = XOff + Cos(Wnk1) * PX(j) - Sin(Wnk1) * PY(j)
Fgr(j).Y = YOff + Sin(Wnk1) * PX(j) + Cos(Wnk1) * PY(j)
Next j
.ForeColor = RGB(64, 64, 64)
.FillColor = Choose(1 + Rnd * 3, vbRed, vbBlue, vbMagenta)
Polygon .hdc, Fgr(0), 4
.ForeColor = vbWhite
.CurrentX = XOff
.CurrentY = YOff
Picture1.Print i
Picture2.ForeColor = i
Picture2.FillColor = i
Polygon Picture2.hdc, Fgr(0), 4
Next i
End With
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As _
Single, Y As Single)
Dim Ix&, AG$
Ix = Picture2.Point(X, Y)
If Ix > 0 Then
AG = "Mauszeiger auf Rechteck Nr. " & Ix
Else
AG = "Leere Stelle"
End If
Me.Caption = Space(50) & AG
End Sub Gruss,
Zardoz |