Выбрать главу

Проверьте, чтобы форма была распахнута на весь экран. После щелчка мыши по кнопке компьютер должен сделать следующее: Настроить большой Image, чтобы он подстраивался под размеры картинки, установив сами знаете какое свойство.

Пусть большой Image копирует в себя картинку из маленького. На форме появится более-менее большое фото неискаженных пропорций, но не по центру. Все это у вас уже давно готово. Задача — увеличить фото еще больше, и чтобы оно было по центру.

Поделить ширину формы на ее высоту, чтобы узнать ее "продолговатость". (Это надо бы пораньше, да ладно.)

Поделить ширину Image на его высоту, чтобы узнать "продолговатость" картинки.

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

Если продолговатость картинки меньше, чем продолговатость формы, то в идеале при максимальном увеличении картинка упрется верхним и нижним краем в края формы, а слева и справа должно остаться одинаковое пространство. Здесь тоже нужно выполнить несколько аналогичных операторов.

Таким образом, при щелчке по кнопке на форме возникает фото и сразу же за этим вместо него — оно же, но увеличенное и по центру. Если вам не нравится такое мелькание, поэкспериментируйте в программе со свойством Visible объекта Image. Гарантирую прекрасные результаты.

Другие полезные сведения

Если вы загружаете картинку в объект в режиме проектирования, то Visual Basic сохраняет ее в одном из файлов, из которых состоит ваш проект. Это резко увеличивает размеры вашего проекта на диске и время загрузки проекта, зато теперь вы можете безнаказанно стереть исходный графический файл с диска. Если вы загружаете картинку в объект в режиме работы, то все наоборот.

Преимущество формы и PictureBox в том, что вы при помощи их методов можете печатать информацию прямо на их картинке и рисовать по ней (например, пририсовать кому-нибудь очки).

Второй способ — Объекты Line и Shape

Рассмотрим второй способ использования графики в Visual Basic.

Возьмем в Toolbox объект Line (Линия) и проведем наискосок мышкой по форме. На форме разместится отрезок прямой. Мы можем его перемещать за маркеры или ухватившись острием мышиного курсора за середину. Поэкспериментируйте со следующими свойствами линии:

Свойство ∙ Смысл

BorderWidth ∙ Толщина линии

BorderColor ∙ Цвет линии

Borderstyle ∙ Стиль линии (сплошная, штриховая и т. п.). Предварительно сделайте толщину = 1.

X1, Y1, X2, Y2 ∙ Координаты крайних точек отрезка

Возьмем в Toolbox объект Shape (Фигура) и проведем наискосок мышкой по форме. На форме разместится прямоугольник. Он может превратиться в квадрат, овал (эллипс), круг, может закруглить углы, все это в зависимости от значения его свойства Shape (да-да, одинаковые названия у объекта и его свойства). Поэкспериментируйте со следующими свойствами фигуры:

Свойство ∙ Смысл

BorderWidth ∙ Толщина линии

BorderColor ∙ Цвет линии

Borderstyle ∙ Стиль линии (сплошная, штриховая и т. п.). Предварительно сделайте толщину = 1.

Сейчас пространство внутри фигуры прозрачное. В этом легко убедиться, если на форму загружена какая-нибудь картинка. Предположим, вы хотите, чтобы пространство внутри фигуры было не прозрачным, а залито краской или заполнено узором. Для этого давайте разберемся в устройстве фигуры. Удобно представлять, что фигура — это оконная рама со вставленными в нее двумя прозрачными стеклами. Одно стекло — подальше от наших глаз, другое поближе. Прозрачностью дальнего стекла управляет свойство BackStyle, а цветом — свойство BackColor. На дальнем стекле узоров не бывает. Прозрачностью и узором ближнего стекла управляет свойство FillStyle, а цветом — свойство FillColor. Поэкспериментируйте.

Метку тоже можно сделать прозрачной, как и фигуру, если ее свойство BackStyle задать равным Transparent.

Взаимное перекрытие объектов. Метод ZOrder

На рисунке вы видите несколько объектов, размещенных на форме и частично перекрывающих друг друга. Это линии, фигуры, Image (маленькое фото), PictureBox (рамка с маленьким крестиком в углу), текстовое поле, кнопка, метка. По какому принципу они перекрывают друг друга? Почему текстовое поле перекрывает линию и фигуру, а не наоборот? Рассмотрим эту механику.