PDA

View Full Version : حرفه ای: مشخص کردن شماره خونه ها و ترتیب ذخیره انها



goldpower
سه شنبه 30 خرداد 1391, 11:54 صبح
http://axgig.com/images/19863956986351853004.png


چه طور می شه با ارایه دو بعدی ادرس خونه های قرمز رو مشخص کرد .

البته یه شرط داره :
هر سطر رو که از سمت چپ می خونه به اولین خونه قرمز که رسید مختصاتش مثل ( 8و2 ) رو ذخیره کنه. بعد به خونه بقلیش نگاه کنه اگه قرمز بود مختصات اونم که می شه (9و2) ذخیره کنه. همین طور پیش بره تا سطر اخر.

به سطر اخر که رسید این بار از سمت راست شروع کنه خونه ها رو پیدا کنه و بیاد بالا تا به سطر اول برسه.

این کار باعث می شه که کل شکل به صورت پیوسته و طبق ترتیب حروف الفبا که روشون نوشته شده ذخیره بشه.

Veteran
سه شنبه 30 خرداد 1391, 12:37 عصر
ارایه کنترلی
روی هر شی کلیک شد ایندکس اونو ذخیره کن

goldpower
سه شنبه 30 خرداد 1391, 12:52 عصر
دوست عزیز این شکل بزرگنمایی داره و در ابعاد واقعی خونه ها به اندازه پیکسل می باشد و روی انها هم چیزی نوشته نشده است.

با کد زیر فقط می شه خونه ها رو شناسایی کرد و اون شرط بالا رو نداره :

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