چه طور می شه با ارایه دو بعدی ادرس خونه های قرمز رو مشخص کرد .
البته یه شرط داره :
هر سطر رو که از سمت چپ می خونه به اولین خونه قرمز که رسید مختصاتش مثل ( 8و2 ) رو ذخیره کنه. بعد به خونه بقلیش نگاه کنه اگه قرمز بود مختصات اونم که می شه (9و2) ذخیره کنه. همین طور پیش بره تا سطر اخر.
به سطر اخر که رسید این بار از سمت راست شروع کنه خونه ها رو پیدا کنه و بیاد بالا تا به سطر اول برسه.
این کار باعث می شه که کل شکل به صورت پیوسته و طبق ترتیب حروف الفبا که روشون نوشته شده ذخیره بشه.
این شکل بزرگنمایی داره و در ابعاد واقعی خونه ها به اندازه پیکسل می باشد و روی انها هم چیزی نوشته نشده است.
با کد زیر فقط می شه خونه ها رو شناسایی کرد و اون شرط بالا رو نداره :
کد:
Private Sub Create_araye()
page.ScaleMode = vbPixels
page.AutoRedraw = True
Rows = page.ScaleHeight \ (H - 1)
Cols = page.ScaleWidth \ (W - 1)
Home(0).Visible = True
Home(0).FillStyle = 1
vLeft = 0
vTop = 0
For i = 0 To Home.UBound
On Error Resume Next
Unload Home(i)
Next
For Row = 1 To Rows
For Col = 1 To Cols
indx = (Row - 1) * Cols + Col
Load Home(indx)
Home(indx).Move vLeft, vTop, W, H
Home(indx).Visible = True
vLeft = vLeft + W - 1
Next
vLeft = 0
vTop = vTop + H - 1
Label3.Caption = "[ " & Col & " , " & Row & " ]"
Next
For Index = 1 To Home.UBound
Xx = Home(Index).Left + Home(Index).Width \ 2
Yy = Home(Index).Top + Home(Index).Height \ 2
If page.Point(Xx, Yy) <> Blank Then
Home(Index).FillColor = page.Point(Xx, Yy)
Else
Home(Index).FillColor = Blank
End If
Next
End Sub