2

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

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);

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

4

1 回答 1

1

像这样的复杂对象可能最好使用元文件构建(假设您想坚持使用原始 GDI)。

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

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

于 2013-09-28T02:35:27.050 回答