VC BMP写字方法(绝对好使)

 char bmppath[]="1.bmp";
 FILE *fp=fopen(bmppath,"rb");
 if(fp==0)
  return ;
 fseek(fp,sizeof(BITMAPFILEHEADER),0);
 BITMAPINFOHEADER head;
 fread(&head,sizeof(BITMAPINFOHEADER),1,fp);
 int bmpHeight=head.biHeight;
 int bmpWidth=head.biWidth;
 int biBitCount=head.biBitCount;
 int lineByte=(bmpWidth*biBitCount/8+3)/4*4;
 RGBQUAD *pColorTable;
 if(biBitCount==8)
 {
  pColorTable=new RGBQUAD[256];
  fread(pColorTable,sizeof(RGBQUAD),256,fp);
 }
 unsigned char *pBmpBuf=new unsigned char[lineByte*bmpHeight];
 fread(pBmpBuf,1,lineByte*bmpHeight,fp);
 
 CDC       *m_pMemDC;
 m_pMemDC = new CDC();
 CDC *pDC=GetDC();
 m_pMemDC->CreateCompatibleDC(pDC);
 CBitmap   *m_pOldBmp=NULL;
 CBitmap   *m_pMemBmp = new CBitmap();       //根据图片的大小创建一个兼容位图
 m_pMemBmp->CreateCompatibleBitmap(pDC, bmpWidth,bmpHeight );
 m_pOldBmp = m_pMemDC->SelectObject(m_pMemBmp);
 
 //把图像的数据绘制到兼容位图上
 
    SetDIBits(m_pMemDC->GetSafeHdc(), (HBITMAP)m_pMemBmp->m_hObject,
  0, bmpHeight, (LPVOID)pBmpBuf, (BITMAPINFO*)&head, DIB_RGB_COLORS);
 m_pMemDC->SetBkMode(TRANSPARENT);
 m_pMemDC->SetTextColor(RGB(255, 0, 0));
 m_pMemDC->TextOut(10,100,"adasd");

 unsigned char *pTemp = new unsigned char[lineByte*bmpHeight];
 GetDIBits(m_pMemDC->GetSafeHdc(), (HBITMAP)m_pMemBmp->m_hObject, 0, bmpHeight,
  (LPVOID)pTemp, (BITMAPINFO*)&head, DIB_RGB_COLORS);
 fclose(fp);

 char bmpwrite[]="2.bmp";
 fp=fopen(bmpwrite,"wb");
 BITMAPFILEHEADER fileHead;
 fileHead.bfType=0x4D42;
 fileHead.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+lineByte*bmpHeight;
 fileHead.bfReserved1=0;
 fileHead.bfReserved2=0;
 fileHead.bfOffBits=54;
 fwrite(&fileHead,sizeof(BITMAPFILEHEADER),1,fp);

 fwrite(&head,sizeof(BITMAPINFOHEADER),1,fp);
 fwrite(pTemp,lineByte*bmpHeight,1,fp);
 fclose(fp);

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值