с QB на VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
snapp
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 14.10.2008 (Вт) 17:33

с QB на VB

Сообщение snapp » 14.10.2008 (Вт) 17:41

помогите перекодить с QBasic на VB

вот исходник QBasic

Код: Выделить всё
SCREEN 12
For i = 0 To 5
For j = 0 To 5
Line (10 + j * 40, 10 + j * 40)-(210 + j * 40, 10 + j * 40), 7
Line (10 + i * 40, 10)-(210 + i * 40, 210), 7
Next j
Next i

For i = 0 To 4
For j = 0 To 4
x = 50 + i * 40 + j * 40
y = 30 + i * 40
s = (i + j) Mod 2
If s = 0 Then Paint (x,y),5,7
Next j
Next i

на QB первый цикл создает сетку из паралелограммов.. а второй цикл - закрашивает их через один. как добиться такого же резульата в VB. и как правильно его там оформить чтобы просмотреть результат.
[Viper] :: Не забываем ползоваться тэгами CODE!

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: с QB на VB

Сообщение Proxy » 14.10.2008 (Вт) 18:01

Убери Screen 12, подставь перед каждым Line "Form1." Предварительно ещё "Form1.autoredraw = true"
А вот что Paint делает я не помню. Если заливка, то посмотри про заливку посты. Скорей всего без API для заливки не выйдет.
Ах да, и цвет 7 убери. Тут будет чёрный подефолту, если ты ничего нигде не менял. Белый по серому ты не увидишь.
Follow the white rabbit.

snapp
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 14.10.2008 (Вт) 17:33

Re: с QB на VB

Сообщение snapp » 16.10.2008 (Чт) 17:08

на QB так
Код: Выделить всё
CLS
SCREEN 12
R = 200: n = 16: k = 10: h = R \ k
pi = 4 * ANT(1)
u = 2 * pi / n

FOR i = 1 TO n
xi = 320 + R * cos (i * u)
yi = 240 + R * sin (i * u)
LINE (320, 240)-(xi,yi),5
next i

for j = 1 to k
circle(320, 240), j * h , 5
next j

for j = 0 to k - 1
for i = 1 to n
x=320 + (h/2 +j*h)*cos(u/2+i*u)
y=240 + (h/2 +j*h)*sin(u/2+i*u)
s=(i+j) MOD 2
if s=0 then paint (x,y),11 ,5
next j
next i
paint (320 + R + 2, 240), 2, 5


на VB вышло так
Код: Выделить всё
Option Explicit

Private Enum FloodFillType
FLOODFILLBORDER = 0
FLOODFILLSURFACE = 1
End Enum
Private Declare Function ExtFloodFill Lib "gdi32" ( _
ByVal hDC As Long, ByVal x As Long, ByVal y As Long, _
ByVal crColor As Long, ByVal wFillType As FloodFillType) As Long

Private Sub Form_Load()
Dim i As Long, j As Long, s As Long
Dim x As Long, y As Long
Dim R As Long, n As Long, k As Long
Dim h As Single, u As Single, pi As Single
Dim xi As Single, yi As Single

AutoRedraw = True
ScaleMode = vbPixels

R = 200: n = 16: k = 10: h = R \ k
pi = 4 * Atn(1)
u = 2 * pi / n

For i = 1 To n
xi = 320 + R * Cos(i * u)
yi = 240 + R * Sin(i * u)
Line (320, 240)-(xi, yi), vbBlack
Next i

For j = 1 To k
Circle (320, 240), j * h, vbBlack
Next j

FillColor = vbRed
FillStyle = vbSolid
For j = 0 To k - 1
For i = 1 To n
x = 320 + (h / 2 + j * h) * Cos(u / 2 + i * u)
y = 240 + (h / 2 + j * h) * Sin(u / 2 + i * u)
s = (i + j) Mod 2
If s = 0 Then ExtFloodFill hDC, x, y, vbBlack, FLOODFILLBORDER
Next i
Next j
End Sub


чертит 10 колец и разбивает их лучами из середины.. разбивы в кольцах закрашивает через один.. для 9и колец все нормально выплняется, а для 10ого кольца нет.. Где ошибка?

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: с QB на VB

Сообщение djalex777 » 16.10.2008 (Чт) 17:37

Линия не рисуется до конца, поэтому заливка заливает (во как :) ) и то, что рядом. Либо линни подлиннее, либо окружности покороче...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 65

    TopList