65.9K
CodeProject 正在变化。 阅读更多。
Home

CBitmapDC - 自动内存 DC 包装器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (12投票s)

1999年11月25日

viewsIcon

143608

downloadIcon

3676

一个方便的类, 提供内存位图设备上下文

  • 下载演示项目 - 18 Kb
  • 下载源代码 - 5 Kb
  • CBitmapDCCDC 的一个子类。 这是一个方便的小类,它提供了一个内存位图设备上下文,而无需每次需要时都重新发明轮子。

    示例 1

    CBitmapDC 可以用来动态创建一个 CBitmap
    1. 通过调用 CBitmapDC 的构造函数,并传入所需的位图宽度和高度,来创建一个内存位图设备上下文
    2. 使用正常的 CDC 绘图函数在这个设备上下文中进行绘制
    3. 调用 CBitmapDC 的 Close 函数,这将返回一个指向完成的 CBitmap 的指针
    4. 对 CBitmap 做任何你想做的事情
    5. 删除 CBitmap
    void CMyView::OnDraw(CDC* pDC)
    {
      CBitmapDC bitmapDC(50, 50, pDC);
      bitmapDC.Rectangle(0, 0, 50, 50);
      bitmapDC.MoveTo(0,50);
      bitmapDC.LineTo(50,0);
      CBitmap *pbmp = bitmapDC.Close();
      DrawBitmap(pbmp, pDC, CPoint(10, 10));
      delete pbmp;
    }
    

    示例 2

    CBitmapDC 可以用作一个临时草稿板
    1. 通过调用 CBitmapDC 的构造函数,并传入所需的位图宽度和高度,来创建一个内存位图设备上下文
    2. 使用正常的 CDC 绘图函数在这个设备上下文中进行绘制
    3. 做任何你想做的事情,例如将内存设备上下文复制到屏幕上
    4. 使用 CBitmapDC 析构函数的自动清理功能
    void CMyView::OnDraw(CDC* pDC)
    {
      CBitmapDC bitmapDC_2(50, 50, pDC);
      bitmapDC_2.Rectangle(0, 0, 50, 50);
      bitmapDC_2.MoveTo(0, 0);
      bitmapDC_2.LineTo(50, 50);
      pDC->BitBlt(200, 10, 50, 50, &bitmapDC_2, 0, 0, SRCCOPY);
    }
    
    © . All rights reserved.