02.09.2007, 16:18
общий
это ответ
Здравствуйте, Красильников И.П.!
Создайте новый проект с простой формой и вставьте туда этот код. Рисовать правой кнопкой, перемещать нарисованное - левой. Подробности по почте или по майлагенту. Удачи!
Dim ПрвКнНажата As Boolean
Dim ЛевКнНажата As Boolean
Dim minX As Double
Dim maxX As Double
Dim minY As Double
Dim maxY As Double
Dim записьX As String
Dim записьY As String
Dim МоментНажатияX As Double
Dim МоментНажатияY As Double
Dim МоментОтпусканияX As Double
Dim МоментОтпусканияY As Double
Private Sub Form_Load()‘Событие происходит при запуске формы
AutoRedraw = -1 ‘Разрешем рисвать на форме
DrawWidth = 10 ‘Устанавливаем толщину точек рисования (можно менять)
ПрвКнНажата = False
ЛевКнНажата = False
minX = Форма1.Width
minY = Форма1.Height
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘При нажатии кнопки мышки
If Button = vbRightButton Then ‘Если правая кнопка
ПрвКнНажата = True
End If
If Button = vbLeftButton Then ‘Если левая кнопка
МоментНажатияX = X ‘Запоминаем координаты нажития
МоментНажатияY = Y
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘При отпускании кнопки мыши
If Button = vbRightButton Then ‘Если правая кнопка отпущена
ПрвКнНажата = False
End If
If Button = vbLeftButton Then ‘Если левая
МоментОтпусканияX = X
МоментОтпусканияY = Y
РазницаX = МоментНажатияX - МоментОтпусканияX
РазницаY = МоментНажатияY - МоментОтпусканияY
minX = minX - РазницаX
minY = minY - РазницаY
maxX = maxX - РазницаX
maxY = maxY - РазницаY
ПереЗаписьX = ""
ПереЗаписьY = ""
ОдинСимвол = " "
символX = 0
символY = 0
Форма1.Cls ‘Очищаем форму
Do While ОдинСимвол <> "" ‘Цикл пока ОдинСимвол не равен пустой строке
символX = символX + 1
ОдинСимвол = Mid(записьX, символX, 1) ‘Читаем из строковой переменной записьX по одному символу. СимволX - порядковый номер символа
If ОдинСимвол = Chr(10) Then ‘Если ОдинСимвол равен переносу на другую строку, то
ОдинСимвол = " "
Do While ОдинСимвол <> Chr(10) ‘Цикл пока ОдинСимвол не равен переносу
символY = символY + 1
ОдинСимвол = Mid(записьY, символY, 1)
If ОдинСимвол = Chr(10) Then
НовыйX = CDbl(СтарыйX) - РазницаX ‘CDbl - преобразует строковую переменную к типу Dooble
НовыйY = CDbl(СтарыйY) - РазницаY
PSet (НовыйX, НовыйY), QBColor(12) ‘Рисуем точку с новыми координатами. 12 - цвет, можно менять
ПереЗаписьX = ПереЗаписьX + CStr(НовыйX) + Chr(10) ‘Cstr - преобразует переменную НовыйX к типу String, Chr(10) - знак преноса на другую строку
ПереЗаписьY = ПереЗаписьY + CStr(НовыйY) + Chr(10)
СтарыйX = ""
СтарыйY = ""
Else
СтарыйY = СтарыйY + ОдинСимвол ‘Добавляем символ к переменной (восстанавливаем координату)
End If
Loop
Else
СтарыйX = СтарыйX + ОдинСимвол
End If
Loop
записьX = ПереЗаписьX ‘Копируем все новые координаты всех точек в переменную
записьY = ПереЗаписьY
End If
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘При перемещении мышки. ‘X, Y - текущие координаты мышки
If ПрвКнНажата = True Then
PSet (X, Y), QBColor(12) ‘Рисуем точку
If X < minX Then minX = X
If X > maxX Then maxX = X
If Y < minY Then minY = Y
If Y > maxY Then maxY = Y
записьX = записьX + CStr(X) + Chr(10)‘Записываем все координаты точек и добавляет перенос
записьY = записьY + CStr(Y) + Chr(10)
End If
If maxX > X And minX < X And maxY > Y And minY < Y Then
MousePointer = 15 ‘Меняем курсор в пределах этих координат
Else
MousePointer = 0
End If
End Sub