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

📄 slx.txt

📁 图形处理绘制的重要程序这是本人花了一下午敲到电脑上的
💻 TXT
字号:
#include <windows.h>
#include <stdlib.h>
#incldue <string.h>
#include <math.h>
const double pi=3.1415926;

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);	//消息处理函数
BOOL InitWindowsClass(HINSTANCE hInstance);//初始化窗口类声明
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);//初始化窗口声明

HWND hWndMain;

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)//主函数
{
     MSG Message;
     if(!InitWindowsClass(hInstance))
                 return FALSE;
     if(!InitWindows(hInstance,nCmdShow))
                 return FALSE;
     while(GetMessage(&Message,0,0,0)){
          TranslateMessage(&Message);
          DispatchMessage(&Message);
     }
      return Message.wParam;
}

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
       HDC hDC;                             //定义设备环境句柄
       HBRUSH hBrush;                      //定义画刷句柄
       HPEN hPen;                         //定义画笔句柄
       PAINTSTRUCT   PtStr;                //定义包含绘图信息的结构体变量
       double dfRadious0=100.0,dfRadious1;   //外部内部正五边形外接圆半径
       PONIT lpOuterPoints[5],lpInnerPoints[5];   //定义外,内正五边形点结构数组
       PONIT lpTriangle[3];         //定义三角形点结构数组
       dfRadious1=dfRadious0*sin(0.1*pi)/sin(126.0/180*pi);//根据外接圆半径计算内圆半径
      /*计算内外正五边形的点的坐标*/
       for (int i=0;i<5;i++)
       {
         lpOuterPoints[i].x= (long)(dfRadious0*cos(i*72.0/180*pi));
         lpOuterPoints[i].y= (long)(dfRadious0*sin(i*72.0/180*pi));
         lpInnerPoints[i].x= (long)(dfRadious1*cos(i*72.0/180*pi+36.0/180*pi));
         lpInnerPoints[i].y= (long)(dfRadious1*sin(i*72.0/180*pi+36.0/180*pi)); 
       }

      switch(iMessage)
      {
          case WM_PAINT:                              //处理消息函数
                  hDC=BeginPaint(hWnd,&PtStr);        //得到设备环境句柄
                  SetMapMode(hDC,MM_ANISOTROPIC);     //设置映像模式
                  SetWindowOrgEx(hDC,-100,-100,NULL);  //设置坐标原点
                  hPen =CreatePen(PS_SOLID,1,RGB(255,0,0));   //创建红色画笔
                  SelectObject(hDC,hPen);                    //选入画笔
                  Polygon(hDC,lpOuterPoints,5);             //画正五边形
                  
                  for (i=0;i<5;i++){
                        lpTriangle[0]=lpOuterPoints[i%5];
                        lpTriangle[1]=lpInnerPoints[i%5];
                        lpTriangle[2]=lpOuterPoints[(i+1)%5];    
                        hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30));    //创建新画刷
                        SelectObject(hDC,hBrush);                    //选入新画刷
                        Polygon(hDC,lpTriangle,3);             //画三角形区域
                        lpTriangle[2]=lpInnerPoints[(i+4)%5];   //生成图形中三角形区域的坐标
                        hBrush=CreateSolidBrush(RGB(i*40,i*30,i*20));    //创建画刷
                        SelectObject(hDC,hBrush);                    //选入画刷
                        Polygon(hDC,lpTriangle,3);             //画三角形区域
                 }
                 hBrush=CreateSolidBrush(RGB(255,255,255));    //创建白画刷
                 SelectObject(hDC,hBrush);                    //选入新画刷
                 Polygon(hDC,lpTriangle,3);             //画三角形区域
                 Polygon(hDC,lpOuterPoints,5);             //画中心的五边形
                 //用不同的颜色的画笔来绘制五角星
                 MoveToEx(hDC,lpOuterPoints[0].x,lpOuterPointer[0].y,NULL);
                 for(i=1;i<=5;i++)
                 {
                        hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0));
                        SelectObject(hDC,hPen);
                        LineTo(hDC,lpOuterPoints[(i+2)%5].x,lpOuterPoints[(i+2)%5].y);
                 }
                 hPen=(HPEN)(GetStockObject(PS_NULL));
                 DeleteObject(hPen);        //删除画笔
                 DeleteObject(hBrush);        //删除画刷
                 EndPaint(hWnd,&PtStr);       //结束绘图
                 return 0;
         case WM_DESTROY: 
                 PostQuitMessage(0);
                 return 0;
         default:
                 return (DefWindowProc(hWnd,iMessage,wParam,lParam));
       }
}



BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)//初始化
{
      HWND  hWnd;                             //定义窗口句柄
      hWnd=CreateWindow("Polygon"/*窗口类名*/,"五边形"/*窗口实例标题*/,WS_OVERLAPPEDWINDOW/*窗口风格*/,CW_USEDEFAULT/*窗口左上角坐标*/,0/*窗口左上角坐标*/,CW_USEDEFAULT/*窗口宽度*/,0/*窗口高度*/,NULL/*无父窗口*/,NULL/*无主菜单*/,hInstance/*创建此窗口的应用程序的当前句柄*/,NULL/*指向传递给窗口的参数值的指针*/);
      if(!hWnd)//如果窗口创建失败 返回false
         return FALSE;
      hWndMain=hWnd;                //将句柄传递给全局变量
     ShowWindow(hWnd,nCmdShow);     //显示窗口
     UpdateWindow(hWnd);         //更新并绘制用户区
     return TRUE;  
}

BOOL InitWindowsClass(HINSTANCE hInstance)
{
     WNDCLASS WndClass;      //定义窗口类
     WndClass.cbClsExtra=0;
     WndClass.cbWndExtra=0;
     WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));//窗口背景色为白色
     WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);      //窗口采用箭头光标
     WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);      //窗口的最小化图标为默认图标
     WndClass.hInstance=hInstance;           //当前实例句柄
     WndClass.lpfnWndProc=WndProc;           //窗口处理函数
     WndClass.lpszClassName="Polygon";       //窗口类名
     WndClass.lpszMenuName=NULL;             //无菜单
     WndClass.style=0;
     return RegisterClass(&WndClass);         //返回注册窗口的值
}
     
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -