怎么让BitBlt生成BMP图片是黑底红字~~求助~~~~

March0912 2015-01-13 09:34:14
我想用代码直接创建一个BMP图片,要求是黑底红字,但是生成的效果有问题,不知道出在哪里,希望大神帮忙给看看!直接贴代码吧:


int main()
{
const DWORD uWidth = 720, uHeight = 72;

PBITMAPINFO pbmi = (PBITMAPINFO) LocalAlloc (LPTR, sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD)*2);
pbmi->bmiHeader.biSize = sizeof (BITMAPINFOHEADER);
pbmi->bmiHeader.biWidth = uWidth;
pbmi->bmiHeader.biHeight = uHeight;
pbmi->bmiHeader.biPlanes = 1;
pbmi->bmiHeader.biBitCount = 1;
pbmi->bmiHeader.biSizeImage = ((uWidth + 31) & ~31) / 8 * uHeight;

pbmi->bmiColors[0].rgbBlue = 0;
pbmi->bmiColors[0].rgbGreen = 0;
pbmi->bmiColors[0].rgbRed = 0;

pbmi->bmiColors[1].rgbBlue = 0;
pbmi->bmiColors[1].rgbGreen = 0;
pbmi->bmiColors[1].rgbRed = 255;

HDC hDC = CreateCompatibleDC(NULL);
void * pvBits = NULL;
HBITMAP hBitmap = CreateDIBSection (hDC, pbmi, DIB_RGB_COLORS, &pvBits, NULL, 0);
SelectObject (hDC, hBitmap);
HFONT hFont = CreateFont (72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "楷体");
SelectObject (hDC, hFont);

BitBlt (hDC, 0, 0, uWidth, uHeight, NULL, 0, 0, BLACKNESS);

string content = "好好学习 天天向上";
TextOut(hDC, 54, 0, content.c_str(), content.length());

BITMAPFILEHEADER bmfh;
bmfh.bfType = *(PWORD) "BM";
bmfh.bfReserved1 = 0;
bmfh.bfReserved2 = 0;
bmfh.bfOffBits = sizeof (BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2;
bmfh.bfSize = bmfh.bfOffBits + pbmi->bmiHeader.biSizeImage;

HANDLE hFile = CreateFile ("test.bmp", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
if (hFile != INVALID_HANDLE_VALUE)
{
DWORD dwWritten;
WriteFile (hFile, &bmfh, sizeof (BITMAPFILEHEADER), &dwWritten, NULL);
WriteFile (hFile, pbmi, sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2, &dwWritten, NULL);
WriteFile (hFile, pvBits, pbmi->bmiHeader.biSizeImage, &dwWritten, NULL);
CloseHandle (hFile);
}

DeleteObject (hFont);
DeleteObject (hBitmap);
DeleteDC (hDC);
LocalFree (pbmi);

return 0;
}

...全文
290 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
li4c 2015-01-13
  • 打赏
  • 举报
回复
都解决 了,那就接分吧
赵4老师 2015-01-13
  • 打赏
  • 举报
回复
那我就不凑热闹了,免的被踩死。
March0912 2015-01-13
  • 打赏
  • 举报
回复
问题已经解决了,随便散分了散分了....
March0912 2015-01-13
  • 打赏
  • 举报
回复
我生成后的效果是这样的,
明显不对,我要的是黑底,红字,大神帮忙看看
March0912 2015-01-13
  • 打赏
  • 举报
回复
我要的效果是黑底红字,但是生成的效果是背景是黑色,但是字的部分是红底黑字
赵4老师 2015-01-13
  • 打赏
  • 举报
回复
看看,我说的吧,4楼就刚刚在我眼前被活活踩死了。那叫一个惨哪!可惜没拍下来传到网上!

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧