【发布时间】:2011-02-18 15:35:24
【问题描述】:
我想将一个 (x,y,w,h) 子矩形从 src 粘贴到 dest,以便 (x,y) 源像素显示为 (0,0) dest 像素。我很难决定是哪一个庞大的超载做到了这一点。现在我的代码看起来像这样,这显然不起作用:
auto_ptr<Gdiplus::Graphics> g(Gdiplus::Graphics::FromHDC(pDC->GetSafeHdc()));
g->DrawImage(png, r.top, r.bottom, r.Width(), r.Height());
g->Flush();
它不起作用,因为 (x,y) 源像素显示为 (x,y) 目标像素,而我希望它显示为 (0,0) 目标像素。源矩形和目标矩形应该具有相同的大小但不同的偏移量,而不是相同的偏移量。
[编辑] 没关系,我找到了我需要的重载函数。我只需要添加前面的目标 (x,y) 偏移量和末尾的 UnitPixel。
auto_ptr<Gdiplus::Graphics> g(Gdiplus::Graphics::FromHDC(pDC->GetSafeHdc()));
g->DrawImage(png, 0, 0, r.left, r.top, r.Width(), r.Height(), Gdiplus::UnitPixel);
g->Flush();
【问题讨论】:
-
我不确定 gdiplus,但在类似情况下,我猜您需要传递 png 的宽度和高度而不是 r。还要确保图像适合可用的矩形。
-
r 具有 png 宽度/高度。它是在我粘贴代码之前完成的。
-
我从您的标题中删除了“已解决”标签 - 因为您自己找到了解决方案,您应该将其发布为您自己问题的答案并接受它,这样您就可以使用内置的-in 机制,用于标记网站提供的已回答问题。我认为这样做甚至有一个徽章。
-
我之前尝试过这样做,但“回答你自己的问题”按钮永远不起作用。我不知道这是否是因为我使用 Chrome 或其他东西。我的意思是我点击它但没有任何反应。