Нарисовать линию

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Нарисовать линию

Сообщение d3drm » 06.06.2004 (Вс) 14:55

какой самый быстрый способ нарисовать линию в VB не используя DX или OpenGL? И будет ли он так же быстр, как DX?
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.06.2004 (Вс) 15:20

А чёрт его знает, какой самый быстрый. Попробуй метод Line. Попробуй API LineTo. Учти, что при толщине пера больше 1 пикселя рисование происходит медленнее.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 06.06.2004 (Вс) 16:12

LineTo - рисует линию от той точки, где было закончено предыдущее рисование. Просто Line объекта-очень уж тормазнутый метод.

и где тот черт, у которого я могу найти ответ :-?
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.06.2004 (Пн) 10:27

Так есть ещё movetoex, чтобы текущую точку передвинуть.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 07.06.2004 (Пн) 12:01

Это еще медленней чем LineTo...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 07.06.2004 (Пн) 12:06

2 all: Я думаю никто не будет против, если я тут пример кода дам ? :wink:

2 d3drm: Вот готовый пример. Копируй в пустую форму и запускай.

P.S Надеюсь это тебе подойдёт

Код: Выделить всё
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, lpPoint As POINTAPI) As Long
Private Type POINTAPI
        X As Long
        Y As Long
End Type
Dim DRAW As Boolean
Dim PT As POINTAPI
Private Sub Form_Load()
Me.ScaleMode = vbPixels
Me.ForeColor = vbRed
Me.DrawWidth = 3
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
DRAW = True
Call MoveToEx(Me.hdc, X, Y, PT)
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If DRAW Then Call LineTo(Me.hdc, X, Y)
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
DRAW = False
End Sub


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

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

Сейчас этот форум просматривают: PetalBot, Yandex-бот и гости: 8

    TopList