• wince(2.2)BitBlt介绍


      绘制其实就是在给每一个像素点涂颜色,每种颜色都是由红蓝黄三要素组合而成,因此通过RGB 颜色值可以指定出一种颜色,一个 RGB 颜色值由三个两位十六进制数字组成,分别代表各自的颜色强度。例如,颜色值 #FF0000(十六进制) 之所以被渲染为红色,是因为红色的值达到了最高值 FF (等于十进制的 255)。同时红色也可以通过RGB(255,0,0)来表示,也可以通过二进制的0X11111001来表示。

      设备上下文绘图有很多种方法。例如通过创建位图画刷,利用其填充一个区域来实现图像的绘制。此外,还可以使用CDC类的位图函数来输出位图到设备上下文中。

       BitBlt 用于从原设备中复制位图到目标设备,语法格式如下:

      BOOLBitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORDdwRop);

    x:目标矩形区域的左上角x轴坐标点。

    y:目标矩形区域的左上角y轴坐标点。

    nWidth:在目标设备中绘制位图的宽度。

    nHight:在目标设备中绘制位图的高度。

    pSrcDC:源设备上下文对象指针。

    xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。

    ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。

    dwRop:光栅操作代码(查看此参数的详细请点击我)

      StretchBlt与BitBlt不同在于StretchBlt方法能够延伸或收缩位图以适应目标区域的大小。格式如下:

    BOOL StrevhBlt(int x,int y,int nWidth,int nHeight,CDC* pSrcDC,int xSrc,int ySrc,intnSrcWidth,int nSrcHeight,DWORD dwRop);

     

    x:目标矩形区域的左上角x轴坐标点。

    y:目标矩形区域的左上角y轴坐标点。

    nWidth:在目标设备中绘制位图的宽度。

    nHight:在目标设备中绘制位图的高度。

    pSrcDC:源设备上下文对象指针。

    xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。

    ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。

    nSrcWidth;需要复制的位图宽度。

    nSrcHeight;需要复制的位图高度。

    dwRop:光栅操作代码。

    下面是两种方法对比程序,程序代码如下:

    View Code
    void CoutoutBmpView::OnDraw(CDC* pDC)
    
    {
    
         COutputBmpDoc* pDoc =GetDocument();//获取文档对象
    
         ASSERT_VALID(pDoc);//验证文档对象
    
         CDC memDC;//定义一个设备上下文
    
         memDC.CreateCompatibleDC(pDC);//创建兼容的设备上下文
    
         CBitmap bmp;//定义位图对象
    
         bmp.LoadBitmap(IDB_BKBITMAP);//加载位图
    
         memDC.SelectObject(&bmp);//选中位图对象
    
         pDC->BitBlt(30,20,180,180,&memDC,1,1,SRCCOPY);//绘制位图
    
         
    
    
    
    //以上是利用BitBlt来绘制位图
    
         CRect rc(30,20,210,200);//定义一个区域
    
         CBrush brush(RGB(0,0,0));//定义一个黑色的画刷
    
         pDC->FrameRect(rc,&brush);//绘制矩形边框
    
         //只是用来观察两者区别的,绘制一个矩形框
    
         rc.OffsetRect(220,0);//移动区域
    
    
    
    
    
    //下边是利用StretchBlt绘制的位图
    
         BITMAP BitInfo;//定义位图结构
    
         bmp.GetBitmap(&BitInfo);//获取位图信息
    
         int x = BitInfo.bmWidth;//获取位图宽度
    
         int y = BitInfo.bmHeight;获取位图高度
    
         pDC->StretchBlt(rc.left,rc.top,rc.Width(),rc.Height(),&memDC,0,0,x,y,SRCCOPY);//绘制位图
    
         pDC->FrameRect(rc,&brush);//绘制边框
    
         brush.DeleteObject();//释放画刷
    
         memDC.DeleteDC();//释放设备上下文
    
         bmp.DeleteObject();//释放位图对象
    
    }
  • 相关阅读:
    git 实践(二) push的使用
    git 实践(一) pull的使用
    redux项目实战应用笔录
    浅谈ES6的Object.assign()浅拷贝
    React下reducer中处理数组&&对象的赋值改动
    git pull与git clone
    (0)网络编程基础(网络基本知识)
    (1)什么是socket(套接字)
    (12)异常处理
    (11)类的内置函数
  • 原文地址:https://www.cnblogs.com/kalo1111/p/2953604.html
Copyright © 2020-2023  润新知