21xrx.com
2024-12-26 14:35:11 Thursday
登录
文章检索 我的文章 写文章
如何在C++中绘制矩形
2023-07-05 01:25:14 深夜i     --     --
C++ 绘制 矩形 图形库 坐标系

在C++中绘制矩形是很常见的需求,无论是在游戏开发中还是在图形界面设计中都需要用到。那么该怎么绘制矩形呢?下面我们就来介绍几种常见的方法。

方法一:使用Windows API

Windows API是一组用于开发Windows应用程序的函数,其中也包含了许多图形绘制相关的函数,如绘制矩形函数Rectangle。我们可以使用Windows API在窗口上绘制矩形,具体代码如下:

#include

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

  switch (message)

  {

  case WM_PAINT:

    {

      RECT rect = 100; // 矩形的左上角和右下角坐标

      PAINTSTRUCT ps;

      HDC hdc = BeginPaint(hWnd, &ps);

      HBRUSH hBrush = CreateSolidBrush(RGB(255, 0, 0)); // 矩形的颜色

      HBRUSH hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);

      Rectangle(hdc, rect.left, rect.top, rect.right, rect.bottom); // 绘制矩形

      SelectObject(hdc, hOldBrush);

      DeleteObject(hBrush);

      EndPaint(hWnd, &ps);

    }

    break;

  case WM_DESTROY:

    PostQuitMessage(0);

    break;

  default:

    return DefWindowProc(hWnd, message, wParam, lParam);

  }

  return 0;

}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

  WNDCLASSEX wc = { 0 };

  wc.cbSize = sizeof(WNDCLASSEX);

  wc.style = CS_HREDRAW | CS_VREDRAW;

  wc.lpfnWndProc = WndProc;

  wc.hInstance = hInstance;

  wc.hCursor = LoadCursor(NULL, IDC_ARROW);

  wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);

  wc.lpszClassName = "MyClass";

  if (!RegisterClassEx(&wc))

    return -1;

  HWND hWnd = CreateWindow("MyClass", "MyWindow", WS_OVERLAPPEDWINDOW,

    CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL);

  if (!hWnd)

    return -1;

  ShowWindow(hWnd, nCmdShow);

  MSG msg;

  while (GetMessage(&msg, NULL, 0, 0))

  {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

  }

  return (int)msg.wParam;

}

方法二:使用C++图形库

C++图形库是一个简单易用的图形界面库,支持绘制矩形、圆形、直线等常见图形。我们可以使用C++图形库绘制矩形,具体代码如下:

#include

int main()

{

  initgraph(640, 480);

  setfillcolor(RED); // 矩形的颜色

  fillrectangle(10, 10, 100, 100); // 绘制矩形

  getch();

  closegraph();

  return 0;

}

方法三:使用OpenGL

OpenGL是一个跨平台的图形库,可用于开发游戏和计算机图形应用。我们可以使用OpenGL在窗口上绘制矩形,具体代码如下:

#include

void display()

{

  glClearColor(1.0, 1.0, 1.0, 1.0);

  glClear(GL_COLOR_BUFFER_BIT);

  glColor3f(1.0, 0.0, 0.0); // 矩形的颜色

  glRecti(10, 10, 100, 100); // 绘制矩形

  glFlush();

}

int main(int argc, char* argv[])

{

  glutInit(&argc, argv);

  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);

  glutInitWindowPosition(100, 100);

  glutInitWindowSize(640, 480);

  glutCreateWindow("MyWindow");

  glutDisplayFunc(display);

  glutMainLoop();

  return 0;

}

总结:以上三种方法均可用于在C++中绘制矩形,具体选择哪种方法需要根据具体需求和开发环境进行选择。需要注意的是,使用不同方法绘制的矩形具有不同的特点,例如OpenGL绘制的矩形可旋转、缩放等,而Windows API绘制的矩形比较简单,不能进行复杂的变换。

  
  

评论区

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