⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 picturedemo.cpp

📁 c++从入门到精通
💻 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 + -