Учебник Visual Basic .NET Выражения, операторы Классы и объекты Наследование и интерфейсы Обработка событий и делегаты Обработка ошибок Формы Windows Ввод-вывод Многопоточные приложения Поддержка баз данных Обзор ASP .NET

Имена функций вводят нас в заблуждение, так как на самом деле эти функции ничего не задают и не определяют. Работая в паре, они дают способ задания двух вещественных коэффициентов растяжения (сжатия) путем задания четырех целых чисел. Параметры функций должны быть целыми или объектами класса csize, которые тоже создаются из двух целых. Значительно проще было бы задать два вещественных числа и использовать их в качестве коэффициентов. Объяснение наблюдаемой реальности, видимо, кроется в истории разработки функций API (сложности с floating point-арифметикой). IDictionary

Интерфейс IDictionary представляет коллекцию, в которой доступ к данным осуществляется по ключу — как в хэш-таблицах, описанных в предыдущей главе. Более того, класс хэш-таблиц в числе прочих реализует интерфейсы IDictionary, ICollection, Enumerable и ICloneable!

Хотя интерфейс IDictionary объявляется производным от Enumerable и переход к следующему элементу может осуществляться методом MoveNext, обычно такая возможность не используется — коллекции, реализующие IDictionary, ориентируются в первую очередь на обращение по ключу, а не на последовательный перебор элементов. По этой причине интерфейс IDictionary зависит от интерфейса IDic-tionaryEnumerator, который расширяет Enumerator и дополняет его тремя новыми свойствами:

В .NET Framework входит класс DictionaryBase. Определяя класс производным от DictionaryBase, вы получаете в свое распоряжение всю функциональность интерфейса IDictionary.

Члены класса IDictionary перечислены в табл. 5.4.

Поскольку ключи в ассоциативных коллекциях должны быть уникальными, при реали-зации большинства методов необходимо сначала проверить, не был ли заданный ключ использован ранее. Свойство Keys возвращает объект, реализующий ICollection; уникальность ключа проверяется методом,Соп1а1п5 интерфейса ICollection.

Таблица 5.4. Члены интерфейса IDictionary

Метод/свойство

Описание

IsFixedSize (свойство)

Логическое свойство. Показывает, имеет ли коллекция фиксированный размер

IsReadOnly (свойство)

Логическое свойство. Показывает, доступна ли коллекция только для чтения

Item (свойство)

Свойство доступно для чтения и записи. Используется для получения и присваивания значения объекта с заданным индексом

Keys (свойство)

Возвращает объект, реализующий интерфейс ICollection и содержащий все ключи ассоциативной коллекции

Values (свойство)

Возвращает объект, реализующий интерфейс ICollection и содержащий все значения ассоциативной коллекции

Add(ByVal key As Object, ByVal value As Object) (метод)

Добавляет объект с заданным ключом (ключ должен быть уникальным)

Clear (метод)

Удаляет все элементы из ассоциативной коллекции

Contains (ByVal key As Object) As Boolean (метод)

Ищет значение с заданным ключом

GetEnumerator (метод)

Возвращает объект IDictionaryEnumerator для работы с ключами и значениями

Remove(ByVal key As Object) (метод)

Удаляет элемент с заданным ключом

 

Если мы зададимся целью масштабировать изображение, то есть дать пилы-юним-;-лю возможность изменять его размеры, то нам следует научиться управлять режимами и параметрами отображения логической системы координат в физическую. Вы уже знаете, что Win32 API использует четыре координатных пространства (spaces): World space, Page space, Device space, и Physical Device space. Однако большая часть документации и книг но MFC оперируют только двумя терминами: логическая и физическая системы координат. Мы будем использовать термин, логическая система координат, имея в виду Page space.