Я - -полный профан в VB 6.0, но помощь просто необходима!!!

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

Я - -полный профан в VB 6.0, но помощь просто необходима!!!

Сообщение PORTER » 24.11.2004 (Ср) 22:55

Здраствуйте!!!

Имеется программа под названием "Простейший графический редактор", но прочерчивание линий происходит непосредственно на форме!
Как рисовать на чем-то еще (может на PictureBox) и , если не трудно, напишите пожалуйста программный код для этой программы!
(Т.е. добавьте или удалите, что необходимо).

Имеем на данный момент:

Dim IsDraw As Boolean
Option Explicit

Private Sub Exit_Click()
'Выход из графического редактора с помощью вкладки Выход
ГрафРедактор.Hide
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
IsDraw = True
CurrentX = X
CurrentY = Y

'Режим "Карандаш" (нажата левая кнопка мыши)
'Цвет: чёрный; толщина: 1твип.
If Button = vbLeftButton Then
DrawWidth = 1
ForeColor = vbBlack
End If

'Режим "Резинка" (нажата правая кнопка мыши)
'Цвет: фоновый; толшина: 25 твипов.
If Button = vbRightButton Then
DrawWidth = 20
ForeColor = BackColor
End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Прочерчивание линии
If IsDraw Then
Line -(X, Y)
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
IsDraw = False
End Sub

Заранее благодарю!!!!!
Где наша не пропадала, везде пропадала...

--=GAMER=--
Фиолетовый бот
Фиолетовый бот
Аватара пользователя
 
Сообщения: 810
Зарегистрирован: 22.03.2004 (Пн) 11:29
Откуда: Владивосток

Сообщение --=GAMER=-- » 25.11.2004 (Чт) 6:01

Код: Выделить всё
Dim x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer, coord As Integer
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Запись координат
coord = coord + 1
If coord = 1 Then
x1 = X
y1 = Y
End If
If coord = 2 Then
x2 = X
y2 = Y
'Прорисовка
Picture1.ForeColor = vbBlack
Picture1.DrawWidth = 5
Picture1.Line (x1, y1)-(x2, y2)
coord = 0
End If
End Sub
В темноте слепец — самый надежный проводник. В эпоху безумия пусть тебя ведет сумасшедший.

rRenderer Engine
VB Wiki

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 25.11.2004 (Чт) 21:36

[off]"Профан" = профессионал? :) Если да, то откажись от твипов навсегда :)[/off]

PORTER
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 18.11.2004 (Чт) 0:09
Откуда: Новороссийск

Я - -полный профан в VB 6.0, но помощь просто необходима!!!

Сообщение PORTER » 25.11.2004 (Чт) 23:01

Спасибо большое, помогли!
Я очень вам всем благодарен!
Но возникли ещё вопросы:
1) to --=GAMER=-- я ваш код добавил к своему коду, теперь я могу рисовать на PictureBox, но... если зажать левую кнопку мыши на форме, то рисовать можно везде, если зажать левую кнопку мыши непосредственно на PictureBox, ничерта не рисуется...
Где наша не пропадала, везде пропадала...

PORTER
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 18.11.2004 (Чт) 0:09
Откуда: Новороссийск

Я - -полный профан в VB 6.0, но помощь просто необходима!!!

Сообщение PORTER » 25.11.2004 (Чт) 23:06

Простите! Всё теперь рисуется; как я понял, надо ставить 2 точки на PictureBox и появляется линия, а не водить мышь вверх-вниз, прочерчивая за собой линию????
Где наша не пропадала, везде пропадала...

--=GAMER=--
Фиолетовый бот
Фиолетовый бот
Аватара пользователя
 
Сообщения: 810
Зарегистрирован: 22.03.2004 (Пн) 11:29
Откуда: Владивосток

Сообщение --=GAMER=-- » 28.11.2004 (Вс) 6:28

PORTER писал(а):Простите! Всё теперь рисуется; как я понял, надо ставить 2 точки на PictureBox и появляется линия, а не водить мышь вверх-вниз, прочерчивая за собой линию????
Совершенно верно...
Просто забыл об этом сказать...
И ещё, я составлял этот код без добавления к твоему, тоесть - отдельно...
Для удобства можно при первом щелчке поставить маленькую красную точку...
Код: Выделить всё
picture1.forecolor=vbred
picture1.drawwidht=2
picture1.line (x1,y1)-(x1,y1)


Можно эту точку поставить и через другой оператор, но я просто забыл через какой :( (вроде на P начинается :).....
В темноте слепец — самый надежный проводник. В эпоху безумия пусть тебя ведет сумасшедший.

rRenderer Engine
VB Wiki

--=GAMER=--
Фиолетовый бот
Фиолетовый бот
Аватара пользователя
 
Сообщения: 810
Зарегистрирован: 22.03.2004 (Пн) 11:29
Откуда: Владивосток

Сообщение --=GAMER=-- » 28.11.2004 (Вс) 6:31

Кстати помогите и мне как сделать так что-бы линия после первого сщелчка рисовалась как в paint'e, но при этом остальной рисунок оставался "целым - нетронутым"
В темноте слепец — самый надежный проводник. В эпоху безумия пусть тебя ведет сумасшедший.

rRenderer Engine
VB Wiki

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.11.2004 (Вс) 10:46

--=GAMER=-- писал(а):Можно эту точку поставить и через другой оператор, но я просто забыл через какой :( (вроде на P начинается :).....

PSet :?:
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.11.2004 (Вс) 10:58

--=GAMER=-- писал(а):Кстати помогите и мне как сделать так что-бы линия после первого сщелчка рисовалась как в paint'e, но при этом остальной рисунок оставался "целым - нетронутым"

Вот один из вариантов:
Код: Выделить всё
Option Explicit
Private sx As Single, sy As Single

Private Sub Form_Load()
AutoRedraw = True
DrawWidth = 5
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
sx = X: sy = Y: Form_MouseMove Button, Shift, X, Y
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
    Cls
    Line (sx, sy)-(X, Y)
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture = Image
End Sub
Изображение

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

Сообщение d3drm » 28.11.2004 (Вс) 12:38

Вот пример, рисует на пикбоксе, цвет линий мож менять там, ширину...
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.11.2004 (Вс) 13:34

А моя рисовалка через GDI+ тут: http://bbs.vbstreets.ru/viewtopic.php?p=60402#60402
Ей нужна длл-ка, которая тут: http://mix.web.ur.ru/JPEG.zip
Изображение

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

Сообщение d3drm » 28.11.2004 (Вс) 16:45

тут вроде на vb6 чел просил прогу, а не на нете, тем более простенькую...
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.11.2004 (Вс) 16:48

d3drm, ты бы хоть открыл и посмотрел на чём она - именно на VB6 ;-)
Изображение

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

Сообщение d3drm » 02.12.2004 (Чт) 13:16

tyomitch, ты прикалываешься? какой GDI+ в vb 6??
ХЎ

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

Сообщение GSerg » 02.12.2004 (Чт) 13:18

Такой GDI+ на VB6.
Ты его обёртку почему не скачал? :)
GDI+ - оно ещё и Flat API содержит...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение d3drm » 02.12.2004 (Чт) 20:09

как же я без этого GDI жил? о ужас! ))) ладно, продолжаю тупить: что такое этот Flat API? )))
ХЎ

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 02.12.2004 (Чт) 20:27

The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

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

Сообщение d3drm » 02.12.2004 (Чт) 21:33

Почему на vb.net .нет быстрых способов вывода графики? сколько не спрашивал, НУ НЕЛЬЗЯ там выводить изображение попиксельно в цикле! а так хочеца... хотя бы 256-цветку...
ХЎ

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

Сообщение GSerg » 03.12.2004 (Пт) 2:49

Потому что .NET - це виртуальный машина окончательной офигевшая :) И какие-либо предположения о реальной внутренней структуре объектов всё равно ни к чему не приведут (в отличие от VB6 :twisted:)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.12.2004 (Вс) 18:25

d3drm писал(а):Почему на vb.net .нет быстрых способов вывода графики? сколько не спрашивал, НУ НЕЛЬЗЯ там выводить изображение попиксельно в цикле! а так хочеца... хотя бы 256-цветку...

как нельзя :?:
а Bitmap::SetPixel и Bitmap::LockBits на что?

Какая у тебя странная страсть к скоропалительным выводам... Раз VB6 - значит нет GDI+, раз GDI+ - значит нет попиксельной графики... Верхоглядство :evil:
Изображение


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

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

Сейчас этот форум просматривают: Google-бот, SemrushBot, The trick и гости: 15

    TopList