|
|
2008/12/20 上午 05:46:20
感覺你的做法有點問題...要填色的話,分層做什麼?!這麼做不就表示你的輪廓也要自己判斷或是再轉貼一次...
試試: Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long Private Declare Function FloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load() Me.Show: DoEvents Me.AutoRedraw = True: Me.ScaleMode = 3: Me.BackColor = vbWhite '底色 Me.Circle (100, 100), 50, vbBlack: Me.Circle (150, 150), 50, vbBlack '輪廓為黑色(或載入輪廓圖,不需要 把要填色的部分先弄透空!) Dim hFFBrush As Long Randomize Timer For i = 1 To 100 For j = 100 To 150 Step 25 hFFBrush = CreateSolidBrush(RGB(Rnd * 255 + 1, Rnd * 255 + 1, Rnd * 255 + 1)) '填色筆刷 SelectObject Me.hdc, hFFBrush '結合到指定hdc FloodFill Me.hdc, j, j, vbBlack '填色 Me.Picture = Me.Image Me.Refresh DeleteObject hFFBrush '刪除筆刷 Sleep 40 '純粹讓它慢一點! Next j Next i End Sub
|
|