21xrx.com
2024-11-24 18:03:30 Sunday
登录
文章检索 我的文章 写文章
C++绘制矩形教程
2023-07-14 17:58:15 深夜i     --     --
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+库提供的其他方法和实例,进行更多的学习和尝试。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复