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




Перья на основе растровых изображений


Последним испытанием для геометрического пера будет произвольное bitmap-изображение. Если задать BS_PATTERN в качестве стиля кисти, на основе которой создается перо, то линия рисунка может иметь произвольный узор и толщину, что дает волю фантазии разработчика. Однако сначала следует создать ресурс bitmap-изображения, загрузить его и задать его описатель в поле IbHatch логической кисти. Для создания изображения:

  • Перейдите в окно Resource View.

  • Раскройте узел дерева под именем API.rc и убедитесь, что в дереве нет узла с именем Bitmap.

  • Вызовите контекстное меню на узле API.rc и дайте команду Add Resource.

  • В диалоге Add Resource выберите тип Bitmap и нажмите кнопку New.

  • Откройте окно Properties и в поле справа от текста ID задайте идентификатор IDB_PAT1 новому точечному изображению.

  • Измените размер изображения, уменьшив его до 5x5. Используйте для этой цели элементами управления (resize handles) рамки.

  • Создайте произвольное изображение с помощью контрастирующих цветов.

  • В окне Resource View вызовите контекстное меню на узле дерева IDВ_РАТ1 и выберите команду Insert Copy.

  • Измените язык копии на тот, который поддерживается системой, например English (United States), иначе не получится, и нажмите ОК.

  • Теперь вы имеете копию изображения с теми же размерами и идентификатором. Здесь удобно перевести окно Properties в режим Floating или сдвинуть его нижнюю границу вверх. Измените идентификатор нового изображения на юв_РАТ2 и, при желании, возвратите язык ресурса.
  • Измените узор второго изображения и повторите пункты 7-10, задав идентификатор ЮВ_РАТЗ для третьего изображения.
  • Возвратитесь в окно API.CPP и введите в число локальных переменных функции wndProc новые массивы:

    //===== Массив идентификаторов bitmap

    static UINT nPatterns[] =

    {

    IDB_PAT1, IDB_PAT2, IDB_PAT3

    };

    static string bitmap!] =

    {

    "BS_PATTERN, 1", "BS_PATTERN, 2", "BS_PATTERN, 3"

    );

    Вслед за фрагментом, моделирующим стиль PS_USERSTYLE , вставьте следующий код:



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