- •6.1. Объекты – экземпляры класса 11
- •6.2. Графические объекты. Рисуем и пишем. 22
- •Глава 7. Разветвляющиеся программы 45
- •Глава 8. Циклические программы 94
- •Глава 9. Отладка программы 133
- •Глава 10. Типичные приемы программирования 144
- •10.3.1. Пример 154
- •Глава 11. Процедуры и функции 167
- •11.3. Области видимости переменных 208
- •11.4. Функции 222
- •11.5. Переменные и параметры объектного типа 239
- •Глава 12. Графика – 2 259
- •Глава 13. Работа с таймером, временем, датами 320
- •Глава 14. Работа с мышью и клавиатурой 392
- •Глава 15. Массивы, рекурсия, сортировка 440
- •Глава 16. Разные звери в одном ковчеге 479
- •Объекты – экземпляры класса
- •Понятие объекта, как экземпляра класса
- •Создаем объекты из класса
- •Невидимый код в окне кода – Windows Form Designer generated code
- •Удобство визуального программирования
- •Класс – это программа
- •Невидимые объекты
- •Графические объекты. Рисуем и пишем.
- •Класс Graphics
- •Первая нарисованная линия
- •Рисуем отрезки, прямоугольники, круги, эллипсы
- •Рисуем дуги, сектора и закрашенные фигуры
- •Рисуем на нескольких элементах управления
- •Переменные и выражения вместо чисел
- •Методы, «придирчивые» к типу параметров
- •Разветвляющиеся программы
- •Что такое выбор (ветвление)
- •Условный оператор If или как компьютер делает выбор
- •Разбираем оператор If на примерах
- •Правила записи однострочного оператора If
- •Еще примеры и задания
- •Случайные величины
- •Функции Rnd и Randomize
- •Проект «Звездное небо».
- •Многострочный If
- •Разбираем многострочный If на примерах
- •Правила записи многострочного If
- •If условие Then операторы ElseIf операторы
- •Ступенчатая запись программы
- •Вложенные операторы If. Логические операции и выражения
- •Вложенные операторы If
- •Логические операции And, Or, Not
- •Логические выражения
- •Логический тип данных Boolean
- •Оператор варианта Select Case
- •Улучшаем калькулятор
- •Проверка ввода чисел в текстовое поле
- •Запрет деления на ноль
- •Ставим пароль на калькулятор
- •Функция MsgBox
- •Циклические программы
- •Оператор перехода GoTo. Цикл. Метки
- •Цикл с GoTo. Метки
- •Зацикливание
- •Примеры
- •Движение объектов по экрану
- •Выход из цикла с помощью If
- •Операторы цикла Do
- •Оператор Do …. Loop
- •Оператор Do …. Loop While
- •Оператор Do …. Loop Until
- •Оператор Do While …. Loop
- •Оператор Do Until …. Loop
- •Разница между вариантами операторов Do
- •Примеры и задания
- •Оператор Exit Do
- •Оператор цикла While …End While
- •Оператор цикла For
- •Объясняю For на примерах
- •Шаг цикла
- •Синтаксис и работа оператора For
- •Оператор Exit For
- •«Мыльные пузыри» и другие шалости
- •Используем в рисовании переменные величины
- •Отладка программы
- •Типичные приемы программирования
- •Вычисления в цикле
- •Роль ошибок в программе
- •Счетчики и сумматоры
- •Счетчики
- •Сумматоры
- •Вложенные операторы
- •Вложенные циклы – «Таблица умножения»
- •Вложенные циклы – «Небоскреб»
- •Поиск максимума и минимума
- •Процедуры и функции
- •Процедуры
- •Понятие о процедурах пользователя
- •Пример процедуры пользователя
- •Понятие о процедурах с параметрами
- •Пример процедуры с параметрами
- •Вызов процедур из процедуры пользователя
- •Операторы Stop, End и Exit Sub
- •Проект «Парк под луной»
- •Задание на проект
- •От чисел – к переменным
- •От переменных – к параметрам
- •Делим задачу на части
- •Программируем части по-отдельности
- •Серп молодого месяца или «в час по чайной ложке»
- •Земля, пруд, три дерева и два фонаря
- •Ряд деревьев
- •Ряд фонарей и аллея
- •Два способа программирования
- •Области видимости переменных
- •Создание, инициализация и уничтожение переменных
- •Области видимости переменных
- •Зачем нужны разные области видимости
- •Область видимости – блок
- •Статические переменные
- •Функции
- •Передача параметров по ссылке и по значению
- •Из чего состоит тело процедуры. Выражения
- •Функции
- •Константы
- •Переменные и параметры объектного типа
- •Переменные объектного типа
- •Параметры объектного типа
- •Соответствие типов
- •Соответствие объектных типов
- •Неопределенные параметры, произвольное число параметров
- •Что такое методы
- •Пользуемся подсказкой, чтобы узнать объектные типы
- •Параметры методов
- •Графика – 2
- •Точки и прямоугольники
- •Прямоугольник
- •Использование Точки и Прямоугольника в графических методах
- •Собственные перья, кисти и шрифты
- •Создаем собственные перья. Конструктор
- •Создаем собственные кисти
- •Работа с картинками
- •Картинка, как свойство Image элемента управления
- •Растровая и векторная графика
- •Рисуем картинки
- •Размер и разрешение картинок
- •Метод DrawImage и его варианты
- •Метод RotateFlip объекта Bitmap
- •Метод Save объекта Bitmap
- •Рисуем в памяти
- •Перерисовка картинок, фигур и текста
- •Текстурная кисть
- •Работа с цветом
- •Системные цвета
- •Функция FromArgb
- •Прозрачность
- •Как узнать цвет точки на фотографии
- •Преобразования системы координат
- •Встроенный графический редактор vb
- •Работа с таймером, временем, датами
- •Тип данных DateTime (Date)
- •Переменные и литералы типа DateTime
- •Свойства и методы структуры DateTime
- •Свойства и методы модуля DateAndTime
- •Значения строкового параметра для функций работы с датами:
- •Форматирование даты и времени
- •Перечисления
- •Рамка (GroupBox), панель (Panel) и вкладка (TabControl)
- •Рамка (GroupBox)
- •Панель (Panel)
- •Вкладка (TabControl)
- •Проект «Будильник-секундомер»
- •Постановка задачи
- •Делим проект на части
- •Делаем часы
- •Занимаемся датой
- •Занимаемся днем недели
- •Делаем будильник
- •Делаем секундомер
- •Рисуем бордюры вокруг рамок
- •Полный текст программы «Будильник-секундомер»
- •Недоработки проекта
- •Таймер и моделирование
- •Анимация
- •Суть анимации
- •Движем объекты
- •«Движем» свойства объектов
- •Мультфильм «Летающая тарелка»
- •Мультфильм «Человечек»
- •Работа с мышью и клавиатурой
- •Фокус у элементов управления
- •Работа с мышью
- •Основные события, связанные с мышью
- •Подробности событий мыши. Класс MouseEventArgs
- •Две задачи: Глаз-ватерпас и Мышка-карандаш
- •Работа с клавиатурой
- •Событие KeyPress. Класс KeyPressEventArgs. Структура Char
- •События KeyDown и KeyUp. Класс KeyEventArgs
- •Проект – Гонки (игра)
- •Постановка задачи
- •Делим проект на части
- •Первая часть – рисуем поле для гонки
- •Вторая часть – управляем машиной
- •Третья часть – Поведение машины, организация счетчиков и пр.
- •Недоработки проекта
- •Гонки двух автомобилей
- •Задания на проекты
- •Часть III. Программирование на vb – второй уровень
- •Массивы, рекурсия, сортировка
- •Переменные с индексами
- •Одномерные массивы
- •Основы работы с одномерными массивами
- •Мощь одномерных массивов
- •Двумерные массивы
- •Какие бывают массивы
- •Использование массивов при программировании игр
- •Массивы как объекты
- •Массивы как параметры
- •Массивы элементов управления
- •Индукция. Рекурсия
- •Сортировка
- •Простая сортировка
- •Метод пузырька
- •Разные звери в одном ковчеге
- •Коллекции
- •Создание коллекции, методы коллекции
- •Оператор цикла For Each
- •Коллекции, принадлежащие контейнерам
- •Структуры
- •Оператор With
- •Алфавитный указатель
- •Специально для http://all-ebooks.Com
Работа с цветом
До сих пор мы с вами пользовались цветами, которые VB предоставлял нам в структуре Color и в классах Pens и Brushes. Это полторы сотни цветов со своими именами. Но есть и другие цвета. О них мы сейчас и поговорим.
Системные цвета
Задаем системные цвета вручную. Попробуйте в режиме проектирования настроить цвет кнопки. Для этого в окне свойств зайдите в ее свойство BackColor, а в нем – в закладку System (см. Рис. 12 .56) и выберите какой-нибудь цвет.
Рис. 12.56
В этой закладке представлены так называемые системные цвета. Это те цвета, на которые настроены элементы вашей Windows: окна, их заголовки, цвет текста в заголовках, меню и т.д. Например, цвет кнопок и многих других рельефных элементов в Windows называется Control (у меня на компьютере он серый), а цвет рабочего стола, когда на нем нет обоев, называется Desktop (у меня он темно-голубой). Эти цвета мы и видим на рисунке. Вы, наверное, уже обратили внимание, что и VS вслед за Windows всегда предлагает вам цвет Control в качестве цвета формы, кнопок и других элементов управления.
Итак, системные цвета VS берет от Windows. Проверим. Выйдем из VS в Windows. Перенастроим цветовую гамму Windows. Сейчас она у вас, скорее всего, стандартная, серенькая или синеватая. Выберем что-нибудь поярче. Для этого щелкнем правой клавишей мыши по рабочему столу Windows и в контекстном меню выберем Свойства, а там – закладку Оформление. В возникшем окне перенастроим цветовую схему Windows. Обратите внимание, что весь цветовой облик Windows после этого изменился, цвета всех ее элементов стали другими.
Попробуйте теперь в Windows открыть какое-нибудь солидное приложение, например, Word. Вы увидите, что привычные цвета элементов Word тоже изменились в согласии с выбранной в Windows цветовой схемой. Вернитесь в VS, в ваш проект. Вы видите, что изменился цвет кнопки и цвет формы. Снова зайдите в окно свойств, в свойство BackColor, а в нем – в закладку System. Обратите внимание, что все цвета здесь изменились в согласии с выбранной в Windows цветовой схемой. Попробуйте открыть какой-нибудь старый проект – цвета формы и элементов управления изменились и в нем.
Таким образом, изменение цветовой схемы Windows влияет на все ее приложения. Хорошо это или плохо? Как посмотреть. В любом случае программист должен иметь возможность сам решать, должны ли цвета элементов в его приложении зависеть от настройки цветовой схемы Windows.
Как решать? Просто. Если речь идет о выборе цвета в режиме проектирования, то выбрав цвет из закладки System, вы тем самым разрешаете ему меняться в зависимости от настройки цветовой схемы Windows на компьютере пользователя. Если же вы выбираете цвет из закладок Custom или Web, то запрещаете.
Если вы не используете в своем проекте системных цветов, цвета вашего приложения на любом компьютере будут одинаковы независимо от настроек Windows.
Опасайтесь делать цвета одних элементов проекта системными, а других – несистемными. Например, сделав цвет кнопки системным, а именно Desktop, а цвет текста на этой кнопке несистемным, а именно белым, вы сильно рискуете, потому что если пользователю вздумается сделать рабочий стол своего Windows белым, он ничего не сможет прочесть на вашей кнопке.
И вообще – цветовые схемы Windows составляли профессиональные дизайнеры. Если ваше приложение пользуется только системными цветами, то есть хороший шанс, что его цветовое решение будет достаточно гармоничным. Если ваше приложение пользуется только несистемными цветами, то такой шанс тоже есть, если у вас была пятерка по рисованию. Если же приложение пользуется и системными и несистемными цветами, то есть вероятность, что на чужом компьютере оно будет напоминать помесь попугая с вороной.
Задаем системные цвета в коде. До сих пор в коде мы с вами пользовались несистемными цветами, которые VB предоставлял нам в структуре Color и в классах Pens и Brushes пространства имен System.Drawing. Системные же цвета лежат соответственно в классах SystemColors, SystemPens и SystemBrushes пространства имен System.Drawing. Там вы найдете пару десятков примерно тех же цветов, что и в закладке System свойства BackColor. Из класса SystemPens вы берете готовые перья, из класса SystemBrushes вы берете готовые кисти, из класса SystemColors вы берете цвета для всех прочих нужд. Вот примеры использования системных цветов:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Button2.BackColor = SystemColors.ActiveCaption
Button2.ForeColor = SystemColors.ActiveCaptionText
Dim Гр As Graphics = Me.CreateGraphics
Гр.DrawEllipse(SystemPens.MenuText, 100, 0, 300, 200)
Гр.FillEllipse(SystemBrushes.ControlLightLight, 80, 80, 140, 180)
Dim Перо As New Pen(SystemColors.ControlDark)
Гр.DrawEllipse(Перо, 10, 50, 230, 150)
Dim Кисть As New SolidBrush(SystemColors.ControlDark)
Гр.FillEllipse(Кисть, 50, 50, 200, 100)
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim Гр As Graphics = Me.CreateGraphics
Гр.Clear(SystemColors.Control)
End Sub