На этом шаге мы рассмотрим окно изображения.
Сейчас добавим еще одно окно, в котором будем показывать изображение. Изображения в этом примере хранятся в файлах растровой графики, а управлять растровыми изображениями, используя VPI, очень просто. Выполните следующие шаги:
win_picture_eh(_Win,e_Update(_),0):-!,
% не забудьте использовать правильный путь к требуемому ВМР-файлу
Picture = pict_Load("..\\RES\\WIN\\COPY.BMP"),
ClntRCT=win_GetClientRect(_Win),
pict_GetSize(Picture, Width, Height,_Size),
pict_Draw(_Win, Picture, ClntRCT,rct(0,0, Width,Height),rop_SrcCopy),
pict_Destroy(Picture)
Это предложение нуждается в небольшом объяснении.
Сначала предикат pict_Load вызывается с именем файла, содержащего растровый рисунок. Предикат возвратит указатель растрового рисунка, который загружается в память. Вы можете использовать меню Edit | Insert, чтобы вставить имя файла для любого растрового рисунка.
Изображение может быть растянуто до любого размера, поэтому мы должны найти размер и окна, и изображения.
Затем мы вызываем предикат pict_Draw с дескрипторами окна (Win) и изображения (Picture), а также с двумя прямоугольниками. Последний параметр для pict_Draw определяет, как изображение совмещается с пикселами, которые уже принадлежат окну. Здесь же мы только определяем, что хотим копировать изображение в окно (замещение существующих пикселов).
Наконец, уничтожаем изображение, чтобы оно не занимало место в памяти.
Нам необходимо добавить предикат win_lnvalidate к событию e_Size.
Результат работы приложения изображен на рисунке 1:
Рис.1. Результат работы приложения
Созданное приложение можно взять здесь (418,5 Кб).
На следующем шаге мы рассмотрим создание окна дерева.