21xrx.com
2025-04-05 00:23:28 Saturday
文章检索 我的文章 写文章
C++绘制矩形教程
2023-07-14 17:58:15 深夜i     8     0
C++ 绘制 矩形 教程 编程

在C++中,绘制矩形是一个非常基础的操作,常常被用于绘图工具的开发以及游戏引擎中。下面将为大家介绍如何在C++中绘制矩形。

首先需要引入图形库头文件,在Windows下我们可以使用GDI+库绘制图形。头文件可通过宏定义方式进行引入:

#define UNICODE
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "gdiplus.h"
#pragma comment (lib, "Gdiplus.lib")

接下来我们需要定义一个绘图窗口并进行初始化,创建一个新的窗口并进行初始化设置的代码如下:

HWND hwnd;
WNDCLASS wc = {0};
HWND CreateMyWindow(HINSTANCE hInstance);
LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
  wc.lpfnWndProc = MyWindowProc;
  wc.hInstance = hInstance;
  wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  wc.lpszClassName = L"MyWindowClass";
  RegisterClass(&wc);
  hwnd = CreateMyWindow(hInstance);
  ShowWindow(hwnd, nCmdShow);
  MSG msg;
  while(GetMessage(&msg, NULL, 0, 0) > 0){
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return 0;
}
HWND CreateMyWindow(HINSTANCE hInstance){
  HWND hwnd;
  hwnd = CreateWindow(L"MyWindowClass", L"My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 500, NULL, NULL, hInstance, NULL);
  return hwnd;
}
LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp){
  switch(msg){
    case WM_DESTROY:
      PostQuitMessage(0);
      break;
    default:
      return DefWindowProc(hwnd, msg, wp, lp);       
  }
  return 0;
}

完成了基本的窗口初始化操作之后,我们需要在窗口上绘制矩形。为此,我们需要创建一个绘图对象,并调用GDI+库提供的方法实现绘制。在窗口的WM_PAINT消息中调用绘制方法即可完成窗口的绘制操作。以下是绘制矩形的代码:

void drawRectangle(HWND hwnd){
  PAINTSTRUCT ps;
  
  HDC hdc = BeginPaint(hwnd, &ps);
  
  // 创建一个绘图对象
  Graphics graphics(hdc);
  
  // 绘制矩形
  Pen pen(Color(255, 0, 0, 255), 3);
  graphics.DrawRectangle(&pen, 50, 50, 100, 100);
  
  EndPaint(hwnd, &ps);
}
LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp){
  switch(msg){
    case WM_PAINT:
      drawRectangle(hwnd);
      break;
    case WM_DESTROY:
      PostQuitMessage(0);
      break;
    default:
      return DefWindowProc(hwnd, msg, wp, lp);       
  }
  return 0;
}

运行程序,就可以看到一个简单的矩形绘制在窗口中。以上代码只是绘制一个简单的矩形,如果需要绘制更加复杂的图形,大家可以参考GDI+库提供的其他方法和实例,进行更多的学习和尝试。

  
  

评论区

请求出错了