Иллюстрированный самоучитель по VB.NET



              


Иерархия пространства имен System.Windows.Forms - часть 2


Тем не менее сначала мы продолжим путь к формам в иерархии классов System. Windows. Forms. Поскольку среди предков класса Form числится ScrollableControl, формы VB обладают полезной особенностью, которую оценит каждый, кто пытался реализовать форму с прокруткой в VB6:

При выходе за грашцы текущего содержимого форма автоматически прокручивается. Взгляните на рис. 8.21 — на нем изображена форма, позволяющая прокручивать очень большую фрактальную картинку (более 5 Мбайт в запакованном виде!) с базовым множеством Мандельброта. За информацией о множестве Мандельброта обращайтесь по адресу www.olympus.net/personal/dewey/mandelbrot.html.

Прокрутку форм можно протестировать на любом изображении достаточно больших размеров:

  • Разместите на форме графическое поле и задайте его свойству SizeMode значение AutoSize.

  • Найдите большой графический файл.

    Рис. 8.21. Прокрутка изображения базового множество Мандельброта

  • Приведите процедуру Form_Load к следующему виду:

    1 Private Sub Forml_Load(ByVal sender As System.Object,_

    ByVal e As System.EventArgs)Handles MyBase.Load

    2 Me.AutoScroll = True

    3 Me.VScroll = True

    4 Me.HScroll = True

    5 Dim aBigBox As Rectangle = Rectangle.Inflate _

    6 (Me.ClientRectangle. 6. 6)

    7 PictureBoxl.Bounds = aBigBox

    8 ' Предполагается, что графический файл находится в подкаталоге \bin

    9 PictureBoxl.Image = Image.FromFile("Mandelbrot Set.bmp")

    10 End Sub

    Главное место в этом листинге занимает строка 2, в которой свойству AutoScrol 1, определяемому в классе Scrollabl e Control, задается значение True. Без этого прокрутка работать не будет. Строки 3 и 4 указывают на то, что в окне должны отображаться обе полосы прокрутки (вертикальная и горизонтальная). В строке 5 общий метод класса System.Drawing.Rectangle создает прямоугольный объект, в 6 раз больший клиентской области формы. Строка 7 приводит графическое поле к заданному размеру, присваивая прямоугольник свойству Bounds, присутствующему во всех элементах. Как указано в комментарии, строка 9 предполагает, что файл с растровым изображением находится в подкаталоге \bin каталога решения — в реальной программе для определения местонахождения файла следовало бы вызвать диалоговое окно Open File.




    Содержание  Назад  Вперед