Рисование линий

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 12.01.2004 (Пн) 2:28

Рисуешь в цикле линию из отдельных, более мелких линий, где каждая мелкая своим цветом.

Lobo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 08.01.2004 (Чт) 16:49
Откуда: Таллинн, Эстония

Сообщение Lobo » 12.01.2004 (Пн) 17:02

Я думаю, лучше использовать
object.PSet [Step] (x, y), [color]
а перед этим установить ScaleMode = 3 - Pixel

Lobo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 08.01.2004 (Чт) 16:49
Откуда: Таллинн, Эстония

Сообщение Lobo » 13.01.2004 (Вт) 10:38

Ну и что же? Замечательный код. Да ещё и работает! :)
Только я бы написал так:
Код: Выделить всё
Option Explicit

Private Sub Timer1_Timer()
    Const pi = 3.141592653
    Dim sec     As Integer
    Dim x       As Single
    Dim y       As Single
    Static xOld As Single
    Static yOld As Single
   
    sec = Second(Now)
    Picture1.Scale (-12, 12)-(12, -12)
    x = 10 * Sin(sec * pi / 30)
    y = 10 * Cos(sec * pi / 30)
    Picture1.Line (0, 0)-(x, y), vbRed
    'remove old line
    Picture1.Line (0, 0)-(xOld, yOld), &H8000000F
    xOld = x
    yOld = y
End Sub

Но ты хочешь, чтобы линия была разноцветная? Тогда надо добавить что-то вроде такого:
Код: Выделить всё
    Const nRadius   As Single = 10
    Dim vColors     As Variant
    Dim n           As Integer  'number of colors
    Dim i           As Integer
    Dim startX      As Single
    Dim startY      As Single
    Dim endX        As Single
    Dim endY        As Single
   
    n = 3
    vColors = Array(vbRed, vbGreen, vbBlue)
    For i = 0 To n - 1
        startX = i * nRadius / n * Sin(sec * pi / 30)
        startY = i * nRadius / n * Cos(sec * pi / 30)
        endX = (i + 1) * nRadius / n * Sin(sec * pi / 30)
        endY = (i + 1) * nRadius / n * Cos(sec * pi / 30)
        Picture1.Line (startX, startY)-(endX, endY), vColors(i)
    Next


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

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

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

    TopList  
cron