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

时间:2013-09-26 18:55:13

标签: 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(hdc,199,50,NULL);
    LineTo(hdc,199,200);
    Arc(hdc,10,150,200,250,10,199,200,200);
    DeleteObject(pen1);
    EndPaint(hWnd,&ps);

如何将一个复杂对象中的所有数字组合起来并使用它? 也许有一些功能可以做到这一点或创建我自己的功能?

1 个答案:

答案 0 :(得分:2)

这样的复杂对象可能最好用metafiles构建(假设你想坚持使用原始GDI)。

首先创建一个带有CreateEnhMetafile的图元文件,它会为您提供一个可以绘制的虚拟DC。然后使用GDI调用将其绘制到DC中。完成绘图后,请调用CloseEnhMetaFile,然后调用GetEnhMetaFileBits将图元文件复制到缓冲区中。

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