C++ 如何在一个对象中组合简单的几何图形?

C++ 如何在一个对象中组合简单的几何图形?,c++,winapi,C++,Winapi,我用简单的几何图形画了圆柱体。 例如: PAINTSTRUCT ps; hdc=BeginPaint(hWnd,&ps); pen1=CreatePen(PS_SOLID,3,RGB(0,0,0)); SelectObject(hdc,pen1); Arc(hdc,10,10,200,100,40,40,40,40); MoveToEx(hdc,10,50,NULL); LineTo(hdc,10,200); MoveToEx(hd

我用简单的几何图形画了圆柱体。 例如:

PAINTSTRUCT ps;
    hdc=BeginPaint(hWnd,&ps);
    pen1=CreatePen(PS_SOLID,3,RGB(0,0,0));
    SelectObject(hdc,pen1);
    Arc(hdc,10,10,200,100,40,40,40,40);
    MoveToEx(hdc,10,50,NULL);
    LineTo(hdc,10,200);
    MoveToEx(hdc,199,50,NULL);
    LineTo(hdc,199,200);
    Arc(hdc,10,150,200,250,10,199,200,200);
    DeleteObject(pen1);
    EndPaint(hWnd,&ps);
如何将所有图形组合到一个复杂对象中并使用它?
也许有一些函数可以实现这一点或创建我自己的函数?

像这样的复杂对象可能是最好的构建工具(假设您想要使用原始GDI)

首先,使用创建一个图元文件,它将为您提供一个可以绘制的虚拟DC。然后使用GDI调用将数据提取到DC中。绘制完成后,调用,然后将图元文件复制到缓冲区中


要绘制图元文件,请将图元文件检索到缓冲区中,调用以创建图元文件句柄,然后调用以绘制它。您可以将变换设置为平移/剪切/缩放图元文件。

您所说的“使用它”是什么意思?是否将所有绘制的对象移动到具有拉伸可能性的其他坐标?请参阅“BitBlt”、“StretchBlt”函数了解开始。我的意思是创建更多类似的对象,或者可能创建矩形,然后使用CreateRectRgn、CreateEllipticRgn和CombineRgn?区域从中剪切一些图形。请记住,您基本上是在使用位图。对于更复杂的对象处理(例如:选择、分组、解组、分层等),您应该寻找向量绘图框架,例如:Cairo。谢谢,我试着做点什么