CRect rect(CPoint(0, 0), CPoint(m_pdoc->m_FollowImg.cols, m_pdoc->m_FollowImg.rows)); LPBYTE lpPixel; LONG nWidth = m_pdoc->m_FollowImg.cols + 4 - m_pdoc->m_FollowImg.cols % 4; LONG nHeight = m_pdoc->m_FollowImg.rows; BITMAPINFOHEADER bmiHeader = { sizeof(BITMAPINFOHEADER), nWidth, -nHeight, 1, 16, BI_RGB, 0, 0, 0, 0, 0 }; HDC hMemDC = CreateCompatibleDC(NULL); HBITMAP hMemBmp = CreateDIBSection(NULL, reinterpret_cast<BITMAPINFO *>(&bmiHeader), DIB_RGB_COLORS, reinterpret_cast<void **>(&lpPixel), NULL, 0); HGDIOBJ hOldBmp = SelectObject(hMemDC, hMemBmp);创建一个这样的位图后怎么在两个函数中对其进行绘制然后将两次绘制的结果一起显示出来
时间: 2024-04-15 11:29:21 浏览: 98
VC基础知识总结多年积累
创建了位图对象后,你可以在两个函数中对其进行绘制操作,并将两次绘制的结果一起显示出来。下面是一个示例代码,演示如何在两个函数中对位图进行绘制,并将结果一起显示出来:
首先,在头文件中声明位图对象和两个绘制函数:
```cpp
class CMyClass : public CWnd
{
private:
CBitmap m_bitmap;
// 其他成员变量和函数
public:
// 构造函数和析构函数
void DrawOnBitmap1();
void DrawOnBitmap2();
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
};
```
然后,在构造函数或其他适当的地方创建位图对象:
```cpp
CMyClass::CMyClass()
{
// 创建位图对象
// ...
}
```
在 `DrawOnBitmap1` 函数中进行第一次绘制操作:
```cpp
void CMyClass::DrawOnBitmap1()
{
CDC memDC;
memDC.CreateCompatibleDC(NULL);
CBitmap* pOldBitmap = memDC.SelectObject(&m_bitmap);
// 第一次绘制操作
// ...
memDC.SelectObject(pOldBitmap);
}
```
在 `DrawOnBitmap2` 函数中进行第二次绘制操作:
```cpp
void CMyClass::DrawOnBitmap2()
{
CDC memDC;
memDC.CreateCompatibleDC(NULL);
CBitmap* pOldBitmap = memDC.SelectObject(&m_bitmap);
// 第二次绘制操作
// ...
memDC.SelectObject(pOldBitmap);
}
```
最后,在 `OnPaint` 函数中将位图的绘制结果一起显示出来:
```cpp
void CMyClass::OnPaint()
{
CPaintDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap = memDC.SelectObject(&m_bitmap);
// 在 memDC 上进行其他绘制操作
// ...
dc.BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(pOldBitmap);
}
```
在上述示例中,我们在 `DrawOnBitmap1` 和 `DrawOnBitmap2` 函数中分别创建了一个兼容于窗口 DC 的内存 DC 对象 `memDC`,并将位图对象 `m_bitmap` 选择到 `memDC` 中。然后,我们可以在 `memDC` 上进行各自的绘制操作。在 `OnPaint` 函数中,我们再次创建一个兼容于窗口 DC 的内存 DC 对象 `memDC`,并将位图对象 `m_bitmap` 选择到 `memDC` 中,以便将两次绘制的结果一起显示出来。
希望对你有所帮助!如有其他问题,请随时提问。
阅读全文