Информационно-образовательный портал для учителя информатики и ИКТ     вход :: регистрация
   

Информатика и информационно-коммуникационные технологии в школе

 
   

   21.05.2018г.

Добрый вечер!  

Разделы портала
 
  Планы, конспекты, презентации, методические находки, дидактический материал к уроку
 
  Настройка и использование школьной компьютерной сети
 
  Краткий теоретический материал, который можно применять на уроке...
 
  Разные полезности, программы, инструкции, советы...
 
  Как сохранить здоровье на уроках информатики
 
  Примерные экзаменационные билеты и ответы
 
  Программы для скачивания...
 
  Правила для пользователей портала
 
  Компьютерное тестирование знаний. Наш проект. Cправочное online руководство по программе
 
 
Сервисы портала
все новости...
поиск по статьям сайта...
вопросы, обсуждения, решаем проблемы вместе ...
отзывы, замечания, предложения...
проверить свои знания, пройдя тесты в режиме online...
образовательные сайты, друзья портала...
для связи с администратором портала
 
Внимание! Опрос!

ЕГЭ по информатике - ... ?

очень сложный
сложный
нормальный
лёгкий
не знаю


результаты

____________________

  Полная или частичная перепечатка каким бы то ни было способом материалов данного сайта допускается только с письменного согласия автора.
  При цитировании или ином использовании материалов ссылка на портал www.klyaksa.net обязательна.

____________________
 
Наши проекты:

MyTestX - лего и удобно

 
 
Афоризм дня
Входи в себя без стука.

Ежи ЛЕЦ


Реклама:


 


Rambler's Top100

Рейтинг@Mail.ru
Яндекс цитирования
 
 

Начало » Конспекты школьника » Часть 2 » [Учимся программировать!][Изучаем события]

Учимся программировать!
Конспекты школьника.
www.klyaksa.net

Изучаем события, связанные с активностью мыши

Давайте попробуем разобраться, как происходит рисование с помощью мыши в графических редакторах.

Запускайте Visual Basic, создайте стандартный проект. Установите свойства формы: Имя (Name) - frmPaint, Caption - "Рисование на форме".

Обычно рисование происходит при движении мыши, т.е. нашему приложению необходимо обрабатывать событие MouseMove, которое сообщает, что мышь перемещается по окну приложения. Добавим следующий код:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    frmPaint.PSet (X, Y)
End Sub

Запустим приложение. При движении мыши по форме остается след из точек.

точки на форме

Но след должен оставаться, только если при движении мыши нажата левая кнопка мыши. Добавим это условие в код приложения.

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then frmPaint.PSet (X, Y)
End Sub

рисование точками

Если запустить только что созданную программу, то можно обнаружить небольшую проблему. Проблема состоит в том, что для того, чтобы нарисовать сплошную линию, нам необходимо двигать курсор мыши очень медленно. Как с этой проблемой справляются другие графические приложения? Очень просто. Они соединяют линией две соседние точки положения мыши. Это может показаться странным, но именно так работают графические редакторы.

Во время движения мыши по экрану компьютер проверяет положение мыши через небольшие промежутки времени. Поскольку компьютер не имеет возможности отследить все положения мыши, то необходимо делать некоторые предположения о ее местонахождении. Это предположение выражается в том, что компьютер предполагает, что мышь двигалась по прямой между теми двумя точками, положение компьютеру известно. Когда вы рисуете на компьютере с помощью мыши, компьютер ведет себя именно так.

Повторим этот метод в нашем приложении. 

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

соединяем точки линией

Почти хорошо. Однако появилась неприятная особенность. Каждый раз, когда мы нажимаем кнопку мыши для того, чтобы начать рисовать новый фрагмент, приложение соединяет линией точку окончания предыдущего фрагмента с началом нового. Для этого нам понадобится знать начальное положение курсора мыши, при нажатии кнопки. Объявим две глобальные переменные в секции (General)(Declarations).

Dim intPrevX As Integer
Dim intPrevY As Integer

окно кода

Теперь перепишем процедуру обработки события MouseMove и добавим обработку события MouseDown.

Dim intPrevX As Integer
Dim intPrevY As Integer

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
    intPrevX = X
    intPrevY = Y
    End If
End Sub


Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then frmPaint.Line (intPrevX, intPrevY)-(X, Y)
    intPrevX = X
    intPrevY = Y

End Sub

Готово! Запускаем приложение и радуемся результату.

результат

Радуемся, радуемся, но если приложение свернуть и обратно развернуть (или на время закрыть другим окном) изображение исчезнет. Избавиться от этой неприятности просто: установите свойство формы AutoRedraw равным true и окно будет перерисовываться автоматически.

Теперь, на закуску, создадим цветной рисунок.

По умолчанию будем использовать черный цвет. Другие цвета можно будет включит нажав на определенную клавишу на клавиатуре, вернутся к черному цвету нажав на любую другую клавишу.

Текущий цвет будем хранить в переменной Color типа Long (Длинное целое число от 32147483648 до +2147483647). Значение переменной можно задать различными способами:

  • присвоив какое-то числовое значение (Color = 12345; Color = &H80000018);
  • с помощью констант (Color = vbBlack);
  • с помощью функции QBColor() (Color = QBColor(3));
  • С помощью функции RGB() (Color = RGB(255,255,255)).

Дополним уже имеющийся код:

Dim intPrevX As Integer
Dim intPrevY As Integer
Dim Color As Long

Private Sub Form_KeyPress(KeyAscii As Integer)
    Select Case Chr$(KeyAscii)
    Case "1"
    Color = RGB(255, 0, 0)
    Case "2"
    Color = RGB(0, 255, 0)
    Case "3"
    Color = RGB(0, 0, 255)
    Case Else
    Color = RGB(0, 0, 0)
    End Select
    lColor = RGB(0, 0, 0)
End Sub

Private Sub Form_Load()
Color = RGB(0, 0, 0)
End Sub


Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
    intPrevX = X
    intPrevY = Y
    End If
    End Sub
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Print lColor
    If Button = 1 Then frmPaint.Line (intPrevX, intPrevY)-(X, Y), Color
    intPrevX = X
    intPrevY = Y
End Sub

Одним из наиболее используемых событий формы является Load. Это событие происходит при загрузке формы в память. Поэтому Load лучше всего подходит для инициализации объектов и переменных, принадлежащих форме.

Готово!

 

предыдущий урок :: содержание :: следующий урок

 

 

 

 

 

 

 

 

 

 

[Добавить в избранное]

 
Рекомендуем:

MyTest

Компьютерное тестирование знаний учащихся, сертификация и аттестация сотрудников.
Деcять типов заданий, локальное и сетевое тестирование...
 
Узнать больше и скачать программу MyTestXPro...
 
Обсудить на форуме и принять участие в создании банка тестов...
 
Новая группа ВКонтакте:
vk.com/MyTestXPro



Рекомендуем купить
на Ozon.ru:


Новый учебник информатики (ФГОС, Углубленный уровень. 10-11 кл.)
Полякова К.Ю.

Год выпуска: 2017


 
Реклама:
 

Разместите нашу кнопку

на своем сайте...
Инструкция


 
 

 
Реклама:

По вопросам размещения вашей рекламы на страницах портала обращайтесь к администратору по системе обратной связи.
Все предложения обсуждаются индивидуально. Ждем.

 
 


↑    

Дизайн, программирование и идея портала Клякс@.net -bas- © 2004-2016г.

    ↑