博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
调用SetDIBits修改位图内容 from http://blog.csdn.net/iamshuke/article/details/5749933
阅读量:5346 次
发布时间:2019-06-15

本文共 1321 字,大约阅读时间需要 4 分钟。

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

 

[cpp] 
  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. }  

 

 效果图:

转载于:https://www.cnblogs.com/songtzu/archive/2012/12/21/2828293.html

你可能感兴趣的文章
我并不是不闻不问![C#]
查看>>
web前端经典小题
查看>>
AutoCAD如何倒角 倒圆角 倒直角
查看>>
Office PPT中如何插入flash
查看>>
C# Fade Form Effect With the AnimateWindow API Function
查看>>
golang多维数组的切片
查看>>
IP 网际协议
查看>>
C语言_第五章__实践(密码转换)
查看>>
docker 容器后台运行命令
查看>>
jquery 获取css position的值
查看>>
面向对象的程序设计
查看>>
a标签添加点击事件
查看>>
Context.startActivity出现AndroidRuntimeException
查看>>
Intellij idea创建javaWeb以及Servlet简单实现
查看>>
代理网站
查看>>
Open multiple excel files in WebBrowser, only the last one gets activated
查看>>
FFmpeg进行视频帧提取&音频重采样-Process.waitFor()引发的阻塞超时
查看>>
最近邻与K近邻算法思想
查看>>
【VS开发】ATL辅助COM组件开发
查看>>
FlatBuffers In Android
查看>>