Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Понятно о Visual Basic.NET. Самоучитель.Ч2.2005...docx
Скачиваний:
79
Добавлен:
25.11.2019
Размер:
4.02 Mб
Скачать
      1. Методы, «придирчивые» к типу параметров

Попробуйте в предыдущем примере о треугольнике в одном из методов DrawLine в качестве параметра задать дробное число, скажем так:

Граф.DrawLine(Pens.Black, x1 / 3, y1, x2, y2)

или так:

Граф.DrawLine(Pens.Black, x1 + 0.8, y1, x2, y2)

Немедленно VB подчеркнет оператор и выдаст подсказку об ошибке, в которой вы увидите слова Double, Integer и Single. В чем дело? Давайте разберемся.

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

Первый способ. Поставьте текстовый курсор на название метода в окне кода (пусть это будет DrawLine) и нажмите клавишу F1. Перед вами возникнет окно помощи, в котором вы чаще всего найдете следующий список (Рис. 6 .11).

Рис. 6.11

Заголовок означает «Список вариантов метода». Не обращайте пока внимания на слова Overloads Public Sub в начале каждой из 4 интересующих нас строк. Далее в каждой строке идет слово DrawLine, а за ним в скобках – список параметров метода, причем в списке приведены именно типы параметров. Почему строк 4, а не одна? Потому что существует 4 варианта этого метода. Каждый из них чертит одни и те же линии, а отличаются варианты параметрами. В типах верхних двух вариантов мы пока даже не можем разобраться, а вот нижние два для нас имеют смысл. Тип первого параметра – Pen. Мы этот тип пока не проходили, но согласимся. Он нас пока не интересует. Остальные четыре параметра – это, как мы знаем, координаты точек. Мы видим, что они должны иметь тип или Integer, или Single.

Второй способ. Найдите в Object Browser класс Graphics и выделите. В правой панели вы увидите его свойства и методы. Среди них вы найдете и 4 варианта метода DrawLine с указанием параметров (см. Рис. 6 .12).

Рис. 6.12

Есть и другие способы.

Причина ошибки. Типы параметров мы узнали. Почему VB выдает ошибку? Потому что результат деления x1/3 имеет, как мы узнали в Error: Reference source not found, тип Double. И результат сложения x1+0.8 тоже имеет тип Double. А нужен Integer или Single. Вот и весь ответ.

Что делать? Способов несколько.

  • Можно объявить переменные x1, y1, x2, y2 не как Integer, а как Single. Это поможет в случае с делением, так как деление Single на Integer дает Single. А в случае со сложением не поможет, так как сложение Single и Double дает Double.

  • Можно изменять надлежащим образом тип литералов, ставя в их конец символы типа. Так, x1 + 0.8F вполне удовлетворит VB.

  • Можно применять функции преобразования типов. Положение спасет, например:

Граф.DrawLine(Pens.Black, CSng(x1 + 0.8), y1, x2, y2)

  • Можно, в конце концов, отказаться от указания типа при объявлении переменных.

1. Подготовительная задача. Начертить цилиндр радиуса 100 и высотой 200, такой, как на Рис. 6 .13. Высота эллипсов, изображающих основания цилиндра, должна быть в два раза меньше их ширины. Переменными можно не пользоваться.

2. Основная задача. Даны радиус и высота цилиндра. Вычислить объем цилиндра и полную площадь его поверхности. Начертить (это нелегко) цилиндр данного радиуса и высоты. Радиус и высоту вводить в два текстовых поля. Объем и площадь выводить на поверхность формы методом DrawString с 3 знаками после запятой и с текстовыми пояснениями. Высота эллипсов, изображающих основания цилиндра, должна быть в два раза меньше их ширины (см. Рис. 6 .13).

Рис. 6.13

Ненадолго расстаемся. Того, чему мы научились, нам вполне хватит для рисования в последующих главах любопытных вещей. Кроме методов рисования рассмотренных нами фигур существуют еще методы рисования многоугольников, кривых Безье, сплайнов и некоторых других. Кроме того, перья, кисти и шрифты гораздо более богаты, чем рассмотренные нами. Мы пока только чуть-чуть прикоснулись к графическим возможностям VB. Дальнейшие возможности графики будут изложены в Глава 12. и Error: Reference source not found. Но не советую прямо сейчас туда отправляться. Будет непонятно.