文档介绍:图形学实验报告顾佳烽
《计算机图形学课内实验》
实验报告
班级:计算机22班
姓名:顾佳烽
学号:2120505034
日期:
;
px = min(max(px, -xlimit), xlimit);
py = min(max(py, -ylimit), ylimit);
}
typedef BOOL(WINAPI*MyStretchBltType)(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
typedef HDC(WINAPI*MyCreateCompatibleDCType)(HDC);
typedef HBITMAP(WINAPI*MyCreateDIBSectionType)(HDC, CONST BITMAPINFO *, UINT, void**, HANDLE, DWORD);
typedef HGDIOBJ(WINAPI*MySelectObjectType)(HDC, HGDIOBJ);
MyStretchBltType MyStretchBlt;
MyCreateCompatibleDCType MyCreateCompatibleDC;
MyCreateDIBSectionType MyCreateDIBSection;
MySelectObjectType MySelectObject;
void LoadGDIFunctions()
{
HMODULE h = LoadLibraryA("");
MyStretchBlt = (MyStretchBltType)(GetProcAddress(h, "StretchBlt"));
MyCreateCompatibleDC = (MyCreateCompatibleDCType)(GetProcAddress(h, "CreateCompatibleDC"));
MyCreateDIBSection = (MyCreateDIBSectionType)(GetProcAddress(h, "CreateDIBSection"));
MySelectObject = (MySelectObjectType)(GetProcAddress(h, "SelectObject"));
}
LRESULT __stdcall WndProc(HWND hWnd, UINT uMSG, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
int delta;
switch (uMSG)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
MyStretchBlt(hdc, 0, 0, width, height, mdc,
(int)(px + (swidth - width / s) / 2), (int)(py + (sheight - height / s) / 2), (int)(width / s), (int)(height / s), SRCCOPY);
EndPaint(hWnd, &ps);
return 0;
case WM_SIZE:
width = LOWORD(lParam);
height = HIWORD(lParam);
FixPSize();
return 0;
case WM_LBUTTONDOWN:
mx = GET_X_LPARAM(lParam);
my = GET_Y_LPARAM(lParam);
SetCapture(hWnd);
movemode = true;
px0 = px;
py0 = py;
break;
case WM_LBUTTONUP:
movemode = false;
ReleaseCapture();
break;
case 0x0