c++ - 将 GDI+ 与 GDI 混合

标签 c++ gdi+ gdi

我正在使用第三方库来绘制图表。该库需要 HDC (GDI)。但我的应用程序使用的是 GDI+。

问题1:这样做安全吗?

void f(Gdiplus::Graphics& graphics)
{
    HDC dc = graphics.GetHDC();

    // Call 3rd party lib functions using dc
    // ...

    graphics.ReleaseHDC(dc);
}

问题 2:库的某些函数需要边界 RECT 结构 (WinAPI)。如果我使用毫米作为页面单位,如何计算该矩形的坐标?

graphics.SetPageUnit(UnitMillimeter);

最佳答案

Q1:可以,但是如果第三方库无法处理您的坐标,您可能需要更改坐标系==> Q2

第二季度:this SO Question有一些针对此的指针(尽管是相反的方向),您需要设置 mapping mode到 MM_HIMETRIC,将 GDI+ 坐标转换为 0.01 毫米的整数并使用 LPtoDP获取像素值。

关于c++ - 将 GDI+ 与 GDI 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138123/

相关文章:

C++ : For Loop and Vectors

c# - 从 System.Drawing.Image 在文件系统上创建一个新图像?

c++ - 从 OpenGL 切换到 GDI

c - 原始/直接访问 BITMAPINFO (HBITMAP) 中的像素数据

c++ - 如何在子类中访问父类(super class)中的私有(private)成员变量?

c++ - Qt QProgressBar - 对齐文本

c++ - 垃圾内存?

c++ - Gdiplus::Bitmap::FromHICON 失败

winapi - 从 tagRECT/CRect 转换为 Gdiplus::Rect

c++ - 改变产地? Win32?