2011-10-01 76 views
0

首先:我对GDI有点新鲜感,所以如果我有任何误解,请原谅(并请告诉我)。如何绘制位图

我想要做的事: 我试图让我的WM_PAINT代码漆为位图,而不是与调用BeginPaint屏幕()。我也想在屏幕上显示位图,同时在其上显示其他数据(不保存到位图)。

任何人都可以告诉我需要实现这个功能和数据类型的win32吗? 谢谢

+0

http://msdn.microsoft.com/en-us/library/ms908165.aspx –

回答

1

首先,要画一个窗口以外的地方,你需要一个新的DC。您可以使用HDC memDC = CreateCompatibleDC([your window hdc]);创建一个。

现在你需要一个位图来绘制。使用HBITMAP memBitmap = CreateCompatibleBitmap ([your window hdc],[your window width],[your window height]);(假设你想要一个相同的大小,如果它不是那么StretchBlt应该做的伎俩)来创建。

请注意,当您完成这些操作后,您需要清理DeleteObject (memBitmap);DeleteDC (memDC);

一旦创建,选择位图到你的屏幕外DC通过SelectObject (memDC, memBitmap);

现在做你的绘图到memDC。完成后,使用函数将源代码hdc用作memDC,将目标hdc用作窗口的DC。不要忘记删除您创建的内容。

+0

由于我们必须使用CreateCompatibleBitmap()创建与设备上下文兼容的位图...在该程序中,我还希望允许用户从文件加载位图。我将如何使该位图兼容呢? – xcrypt