我正在使用第三方库来绘制图表。该库需要HDC(GDI)。但我的应用程序是使用GDI +。
Q1:这样做是否安全?
void f(Gdiplus::Graphics& graphics)
{
HDC dc = graphics.GetHDC();
// Call 3rd party lib functions using dc
// ...
graphics.ReleaseHDC(dc);
}
Q2:某些lib的函数需要一个边界RECT结构(WinAPI)。如果我使用毫米作为页面单位,如何计算该矩形的坐标?
graphics.SetPageUnit(UnitMillimeter);
答案 0 :(得分:2)
Q1:是的,但如果第三方库无法处理您的坐标,您可能需要更改坐标系==> Q2
Q2:this SO Question有一些指针(虽然是相反的方向),你需要将mapping mode设置为MM_HIMETRIC,将你的GDI +坐标转换为0.01 mm的整数和使用LPtoDP获取像素值。