zoukankan      html  css  js  c++  java
  • 调用SetDIBits修改位图内容 from http://blog.csdn.net/iamshuke/article/details/5749933

    通过调用SetDIBits直接修改位图数据。下面的示例在黑色背景上画了一个十字。

    1. void CTest5Dlg::OnOK()   
    2. {  
    3.     // TODO: Add extra validation here  
    4.     CClientDC dc(this);  
    5.     CDC memDC;  
    6.     memDC.CreateCompatibleDC(&dc);  
    7.   
    8.     CBitmap bmp;  
    9.     bmp.CreateCompatibleBitmap(&dc, 300, 200);  
    10.     memDC.SelectObject(&bmp);  
    11.   
    12.     BITMAPINFO bmpInfo;  
    13.     bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);  
    14.     bmpInfo.bmiHeader.biWidth = 300;  
    15.     bmpInfo.bmiHeader.biHeight = -200;  
    16.     bmpInfo.bmiHeader.biPlanes = 1;  
    17.     bmpInfo.bmiHeader.biBitCount = 24;  
    18.     bmpInfo.bmiHeader.biCompression = BI_RGB;  
    19.     bmpInfo.bmiHeader.biSizeImage = 0;  
    20.     bmpInfo.bmiHeader.biXPelsPerMeter = 3000;  
    21.     bmpInfo.bmiHeader.biYPelsPerMeter = 3000;  
    22.     bmpInfo.bmiHeader.biClrUsed = 0;  
    23.     bmpInfo.bmiHeader.biClrImportant = 0;  
    24.       
    25.     long nLnBytes = (bmpInfo.bmiHeader.biWidth*3+3)/4*4;  
    26.     BYTE *pData = new BYTE[nLnBytes*abs(bmpInfo.bmiHeader.biHeight)];  
    27.       
    28.     //清成黑色  
    29.     memset(pData,0,nLnBytes*abs(bmpInfo.bmiHeader.biHeight));  
    30.   
    31.     //画一个十字  
    32.     for(int i=10; i<90; i++)  
    33.     {  
    34.         //横线, 黄色  
    35.         pData[50*nLnBytes+i*3+1] = 255; //g  
    36.         pData[50*nLnBytes+i*3+2] = 255; //r  
    37.   
    38.         //竖线, 蓝色  
    39.         pData[i*nLnBytes+50*3] = 255; //b  
    40.     }  
    41.   
    42.     SetDIBits(dc.m_hDC, bmp, 0, abs(bmpInfo.bmiHeader.biHeight), pData, &bmpInfo, DIB_RGB_COLORS);  
    43.   
    44.     delete []pData;  
    45.   
    46.     dc.BitBlt(0, 0, bmpInfo.bmiHeader.biWidth, abs(bmpInfo.bmiHeader.biHeight), &memDC, 0, 0, SRCCOPY);  
    47. }  

     效果图:

  • 相关阅读:
    递归函数 二分查找
    内置函数
    迭代器 生成器 推导式
    装饰器函数的有用信息
    函数名 闭包 装饰器
    动态参数 命名空间
    C#_LINQ(LINQ to Entities)
    C#_MVC 自定义AuthorizeAttribute实现权限管理
    C#_MVC3之使用Authorize简单的验证登录(一)
    C#_MVC_分页update
  • 原文地址:https://www.cnblogs.com/songtzu/p/2828293.html
Copyright © 2011-2022 走看看