📄 picturedemo.cpp
字号:
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain
(
HINSTANCE hInstance,
HINSTANCE hPrevInst,
LPSTR lpszCmdLine,
int nCmdShow
)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[] = "简单绘图程序";
char lpszTitle[]= "绘图练习";
wndclass.style = 0;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor( NULL, IDC_ARROW) ;
wndclass.hbrBackground =(HBRUSH)GetStockObject( WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = lpszClassName ;
if( !RegisterClass( &wndclass))
{
MessageBeep(0) ;
return FALSE ;
}
hwnd = CreateWindow(
lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
) ;
ShowWindow(hwnd, nCmdShow) ;
UpdateWindow(hwnd);
while( GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg) ;
DispatchMessage(&Msg) ;
}
return Msg.wParam;
}
LRESULT CALLBACK WndProc
(
HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
HDC hdc;
PAINTSTRUCT ps;
HPEN hP; //定义画笔句柄
HBRUSH hB; //定义画刷句柄
static int cxClient, cyClient ;
switch(message)
{
case WM_SIZE:
cxClient = LOWORD (lParam) ;//客户区的宽度
cyClient = HIWORD (lParam) ;//客户区的高度
return 0 ;
case WM_PAINT://通过响应WM_PAINT消息完成绘图工作
//自定义一个画笔,该画笔为绿色,所画线条为点划线,宽度为1
hP=CreatePen(PS_DASHDOT,1,RGB(0,0,255));
//自定义一个红色网格状画刷
hB=CreateHatchBrush(HS_DIAGCROSS,RGB(255,0,0));
hdc=BeginPaint(hwnd,&ps);//取得设备环境句柄
SetMapMode(hdc,MM_TEXT); //设置映像模式
//使用当前缺省画笔、画刷进行绘图
//使用当前画笔绘制矩形,用当前画刷填充矩形
Rectangle(hdc,cxClient/2-100,cyClient/2-100,cxClient/2+100,cyClient/2+100);
SelectObject(hdc,hB);//更新画刷,设置自定义画刷为当前画刷
//使用当前画笔绘制一个椭圆,前画刷填充
Ellipse(hdc,cxClient/2-100,cyClient/2-100,cxClient/2+100,cyClient/2+100);
SelectObject(hdc,hP);//更新画笔,设置自定义画笔为当前画笔
//使用当前画笔绘制x和y轴
MoveToEx(hdc,cxClient/2,cyClient/2-150,NULL);
LineTo(hdc,cxClient/2,cyClient/2+150);
MoveToEx(hdc,cxClient/2-150,cyClient/2,NULL);
LineTo(hdc,cxClient/2+150,cyClient/2);
EndPaint(hwnd,&ps);//释放设备环境句柄
break;
case WM_DESTROY:
DeleteObject(hP);//退出窗口时删除画笔
DeleteObject(hB);//退出窗口时删除黑色画刷
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -