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# DataConstruct 数据结构关于 Array,ArrayList,List,HashTable,Dictionnary的学习记录
    Moq 在.net Core 单元测试中的使用
    记录一些 APM 仓储
    .net core Swagger 过滤部分Api
    C# Conversion Keywords
    (转载)C# 枚举 FlagsAttribute用法
    [慢更]Sublime Text 快捷键及使用过的插件
    Docker发布程序那些事
    RabbitMQ 学习日记
    Linux Tomcat7.0安装配置实践总结
  • 原文地址:https://www.cnblogs.com/songtzu/p/2828293.html
Copyright © 2011-2022 走看看