про масштаб

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
tatarin
Новичок
Новичок
Аватара пользователя
 
Сообщения: 48
Зарегистрирован: 21.09.2005 (Ср) 12:30
Откуда: Russia

Сообщение tatarin » 16.11.2005 (Ср) 12:30

Zoomie писал(а):Что типа в этом роде:

Код: Выделить всё
Dim PointY() As Integer
Dim I As Integer
Dim kX As Single
Dim kY As Single
Dim HighPoint As Integer
Dim LastX As Integer
Dim LastY As Integer

Const PointsCount = 20


Private Sub Form_Load()
Randomize Timer
LastX = 0
LastY = Picture1.Height

ReDim PointY(1 To PointsCount) As Integer

For I = LBound(PointY) To UBound(PointY)
    PointY(I) = Int(Rnd * Picture1.Height \ 2)
Next I

kX = Picture1.Width / (UBound(PointY) - LBound(PointY))

For I = LBound(PointY) To UBound(PointY)
    If PointY(I) > HighPoint Then
        HighPoint = PointY(I)
    End If
Next I

kY = Picture1.Height / HighPoint / 2

For I = LBound(PointY) To UBound(PointY)
    Picture1.Line (LastX, LastY)-(I * kX, Picture1.Height - PointY(I) * kY), vbBlue
    LastX = I * kX
    LastY = Picture1.Height - PointY(I) * kY
Next I
End Sub


что это - че-то не разберусь... :roll: если можно - кратенько опишите
хочется ведь как - и того и другого и можно без хлеба!

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 16.11.2005 (Ср) 17:32

PointY - массив точек (а точнее их Y)
kX - коэффицент по X, т.е то расстояние между каждой точкой
kY - коэффицент по Y, служит для того чтобы самая высокая точка помещалась на графике
HighPoint - Y самой высокой точки
LastX - X предыдущей точки, служит для связывания 2х точек линией
LastY - Y предыдущей точки, служит для связывания 2х точек линией

Const PointsCount = 20 - константа, которой я задал кол-во точек

Код: Выделить всё
LastX = 0
LastY = Picture1.Height

Устанавливаем начальные координаты в нижний левый угол

Код: Выделить всё
ReDim PointY(1 To PointsCount) As Integer

Объявляем массив точек

Код: Выделить всё
For I = LBound(PointY) To UBound(PointY)
    PointY(I) = Int(Rnd * Picture1.Height \ 2)
Next I

Устанавливаем каждой точке случайные координаты

Код: Выделить всё
kX = Picture1.Width / (UBound(PointY) - LBound(PointY))

Получаем раастояние между точками по X,т.е. ширину делим на кол-во точек. UBound - верхняя граница массива, LBound - нижняя

Код: Выделить всё
For I = LBound(PointY) To UBound(PointY)
    If PointY(I) > HighPoint Then
        HighPoint = PointY(I)
    End If
Next I

Ищем Y самой высокой точки.

Код: Выделить всё
kY = Picture1.Height / HighPoint / 2

Устанавливаем коэф. kY.

Код: Выделить всё
For I = LBound(PointY) To UBound(PointY)
    Picture1.Line (LastX, LastY)-(I * kX, Picture1.Height - PointY(I) * kY), vbBlue
    LastX = I * kX
    LastY = Picture1.Height - PointY(I) * kY
Next I

Рисуем график






[/b]

_Step_
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 16.11.2005 (Ср) 0:46

Сообщение _Step_ » 24.11.2005 (Чт) 5:49

А почему забываем про свойство SCALE ??? Удобно ведь им пользоватся!

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 24.11.2005 (Чт) 17:54

Конечно Scale мщжет многое упростить :wink:

Пред.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 81

    TopList