Windows - это 10410y2410k операционная система, работающая в графическом режиме, Вы можете использовать в своих программах графические элементы. Поэто 10410y2410k му важно уяснить, как в рабочей области окна можно рисовать такие элементы, как линии, круги и прямоугольники, используя разнообразные функции Win dows API
. Прежде чем написать программу, рисующую растровое изображение, сначала нужно создать собственно растровое изображение. Для это 10410y2410k го, как и в случае с другими графическими ресурсами, следует воспользоваться помощью графического редактора. В отличие от курсоров и иконок, размеры которых предопределены, для растрового изображения можно задать любой размер. Для работы с примером, приведенным ниже, понадобится растровое изображение размером 77 на 77 пиксел. Назовите это 10410y2410k т файл Bfly bmp
MYBP BITMAP Bfly bmp
Прежде чем использовать в программе растровое изображение, необходимо загрузить его и запомнить его дескриптор. Лучше всего это 10410y2410k можно сделать в функции WinMain API LoadBitmap
HBITMAP LoadBitmap(HINSTANCE hThisInst,
LPCSTR IpszName);
hThisInst a lpszName NULL
HBITMAP hBit // Дескриптор растра
hBit LoadBitmap hThisInst,"MYBP1"); //Загрузить растр
MYPP hBit
case WM_LBUTTONDOWN:
DC=GetDC(hwnd); // DC
memDC=CreateCompatibleDC(DC); // DC
SelectObject(memDC,hBitl);
BitBlt(DC,LOWORD(lParam),HIWORD(lParam),77,77,
memDC SRCCOPY
ReleaseDC hwnd DC // Освободить DC
DeleteDC memDC // Освободить DC
break
Рассмотрим подробнее это 10410y2410k т фрагмент программы. Сначала объявляются два контекста устройств. DC GetDC memDC case
API CreateCompatibleDC
HDC CreateCompatibleDC HDC hdc
hdc NULL
API SelectObject SelectObjectO
HGDIOBJ SelectObject HDC hMdc HGDIOBJ hObject
hMdc a hObject дескриптор это 10410y2410k го объекта. Функция возвращает дескриптор объекта, который был выбран ранее, позволяя при необходимости выбирать его опять.
API BitBlt
BOOL BitBlt(HDC hDest, int X, int Y,
int Width, int Height, HDC hSource,
int SourceX, int SourceY, DWORD dwRaster);
hDest a X Y Width Height hSourse содержит дескриптор исходного контекста устройства, который в это 10410y2410k м случае является контекстом памяти, полученным при вызове teCompatibleDC SourceX SourceY dwRaster задает способ вывода растрового изображения на экран. Наиболее часто используемые значения это 10410y2410k го параметра приведены в следующей таблице 6.1.
dwRaster
SRCCOPY | ||
SRCAND |
AND |
|
SRCPAINT |
OR |
|
SRCINVERT |
XOR |
Windows h
BitBlt
ReleaseDC GetDC CreateCompatibleDC DeleteDC
Растровое изображение является ресурсом, который должен быть освобожден перед завершением программы. Для это 10410y2410k го следует использовать функцию DeleteObject WM DESTROY DeleteObject
BOOL DeleteObject HGDIOBJ hObj
hObj
. Ниже приводится полный текст программы вывода растрового изображения на экран. Программа выводит его каждый раз при нажатии левой кнопки мыши, начиная с текущей позиции курсора. Рисунок 6.4 иллюстрирует работу это 10410y2410k й программы.
#include <Windows.h>
LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM,
LPARAM);
char szWinName[]=" "; //
HBITMAP hBit1; //
int WINAPI WinMain(HINSTANCE hThisInst,
HINSTANCE hPrevInst,
LPSTR lpszArgs,
int nWinMode)
return msg.wParam;
}
// системой Windows и получает в качестве
LRESULT CALLBACK WindowFunc(HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
return 0;
}
|