//定义图形大小
int iWidth = 240;
int iHeight = 64;
int iPixel = 1;
//图形格式参数
LPBITMAPINFO lpbmih = new BITMAPINFO;
lpbmih->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
lpbmih->bmiHeader.biWidth = iWidth;
lpbmih->bmiHeader.biHeight = iHeight;
lpbmih->bmiHeader.biPlanes = 1;
lpbmih->bmiHeader.biBitCount = iPixel;
lpbmih->bmiHeader.biCompression = BI_RGB;
lpbmih->bmiHeader.biSizeImage = 0;
lpbmih->bmiHeader.biXPelsPerMeter = 0;
lpbmih->bmiHeader.biYPelsPerMeter = 0;
lpbmih->bmiHeader.biClrUsed = 0;
lpbmih->bmiHeader.biClrImportant = 0;
lpbmih->bmiColors[0].rgbBlue=0;
lpbmih->bmiColors[0].rgbGreen=0;
lpbmih->bmiColors[0].rgbRed=0; //创建位图数据
HDC hdc,hdcMem;
HBITMAP hBitMap = NULL;
CBitmap *pBitMap = NULL;
CDC *pMemDC = NULL;
BYTE *pBits;
//创建一个系统的设备句柄
hdc = CreateIC(TEXT("DISPLAY"),NULL,NULL,NULL);
hdcMem = CreateCompatibleDC(hdc);////////////////////////////////
//创建图形描述结构
hBitMap = CreateDIBSection(hdcMem,lpbmih,DIB_RGB_COLORS,(void **)&pBits,NULL,0);
pBitMap = new CBitmap;
pBitMap->Attach(hBitMap);
// 创建为图
pMemDC = new CDC;
pMemDC->Attach(hdcMem);
pMemDC->SelectObject(pBitMap);
// CRect rc(0,0,iWidth,iHeight);
pMemDC->SetBkMode(TRANSPARENT);
//图像绘制
//页面背景色
CBrush brushCtl;
brushCtl.CreateSolidBrush(RGB(0,0,0));
pMemDC->Rectangle(rc);
pMemDC->FillRect(rc,&brushCtl) ;
brushCtl.DeleteObject();
//书写文字
pMemDC->SetBkColor(RGB(0,0,0));
pMemDC->SetTextColor (RGB(255,255,255));
int x,y;
x=rc.CenterPoint().x-rc.Width()/2+5;
y=rc.CenterPoint().y-rc.Height()/2+5;
pMemDC->TextOut(x,y,"图像上要显示的文字");
///
// DrawCurve(pMemDC,rc,"温度:27.6度 多云");
//保存到文件并创建位图结构
BITMAPFILEHEADER bmfh;
ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER));
*((char *)&bmfh.bfType) = 'B';
*(((char *)&bmfh.bfType) + 1) = 'M';
bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
bmfh.bfSize = bmfh.bfOffBits + (iWidth * iHeight) * iPixel / 8; TCHAR szBMPFileName[128];
int iBMPBytes = iWidth * iHeight * iPixel / 8;
strcpy(szBMPFileName,filename);
CFile file; if(file.Open(szBMPFileName,CFile::modeWrite | CFile::modeCreate))
{
file.Write(&bmfh,sizeof(BITMAPFILEHEADER));
file.Write(&(lpbmih->bmiHeader),sizeof(BITMAPINFOHEADER)); file.Write(pBits,iBMPBytes);//从这可以得到图像数据在图像的前面插入8个字节,
file.Close();
} pMemDC->DeleteDC();
delete pMemDC; pMemDC = NULL;
delete pBitMap; pBitMap = NULL;
delete lpbmih; lpbmih = NULL;
不能生成图象,为什么??
int iWidth = 240;
int iHeight = 64;
int iPixel = 1;
//图形格式参数
LPBITMAPINFO lpbmih = new BITMAPINFO;
lpbmih->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
lpbmih->bmiHeader.biWidth = iWidth;
lpbmih->bmiHeader.biHeight = iHeight;
lpbmih->bmiHeader.biPlanes = 1;
lpbmih->bmiHeader.biBitCount = iPixel;
lpbmih->bmiHeader.biCompression = BI_RGB;
lpbmih->bmiHeader.biSizeImage = 0;
lpbmih->bmiHeader.biXPelsPerMeter = 0;
lpbmih->bmiHeader.biYPelsPerMeter = 0;
lpbmih->bmiHeader.biClrUsed = 0;
lpbmih->bmiHeader.biClrImportant = 0;
lpbmih->bmiColors[0].rgbBlue=0;
lpbmih->bmiColors[0].rgbGreen=0;
lpbmih->bmiColors[0].rgbRed=0; //创建位图数据
HDC hdc,hdcMem;
HBITMAP hBitMap = NULL;
CBitmap *pBitMap = NULL;
CDC *pMemDC = NULL;
BYTE *pBits;
//创建一个系统的设备句柄
hdc = CreateIC(TEXT("DISPLAY"),NULL,NULL,NULL);
hdcMem = CreateCompatibleDC(hdc);////////////////////////////////
//创建图形描述结构
hBitMap = CreateDIBSection(hdcMem,lpbmih,DIB_RGB_COLORS,(void **)&pBits,NULL,0);
pBitMap = new CBitmap;
pBitMap->Attach(hBitMap);
// 创建为图
pMemDC = new CDC;
pMemDC->Attach(hdcMem);
pMemDC->SelectObject(pBitMap);
// CRect rc(0,0,iWidth,iHeight);
pMemDC->SetBkMode(TRANSPARENT);
//图像绘制
//页面背景色
CBrush brushCtl;
brushCtl.CreateSolidBrush(RGB(0,0,0));
pMemDC->Rectangle(rc);
pMemDC->FillRect(rc,&brushCtl) ;
brushCtl.DeleteObject();
//书写文字
pMemDC->SetBkColor(RGB(0,0,0));
pMemDC->SetTextColor (RGB(255,255,255));
int x,y;
x=rc.CenterPoint().x-rc.Width()/2+5;
y=rc.CenterPoint().y-rc.Height()/2+5;
pMemDC->TextOut(x,y,"图像上要显示的文字");
///
// DrawCurve(pMemDC,rc,"温度:27.6度 多云");
//保存到文件并创建位图结构
BITMAPFILEHEADER bmfh;
ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER));
*((char *)&bmfh.bfType) = 'B';
*(((char *)&bmfh.bfType) + 1) = 'M';
bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
bmfh.bfSize = bmfh.bfOffBits + (iWidth * iHeight) * iPixel / 8; TCHAR szBMPFileName[128];
int iBMPBytes = iWidth * iHeight * iPixel / 8;
strcpy(szBMPFileName,filename);
CFile file; if(file.Open(szBMPFileName,CFile::modeWrite | CFile::modeCreate))
{
file.Write(&bmfh,sizeof(BITMAPFILEHEADER));
file.Write(&(lpbmih->bmiHeader),sizeof(BITMAPINFOHEADER)); file.Write(pBits,iBMPBytes);//从这可以得到图像数据在图像的前面插入8个字节,
file.Close();
} pMemDC->DeleteDC();
delete pMemDC; pMemDC = NULL;
delete pBitMap; pBitMap = NULL;
delete lpbmih; lpbmih = NULL;
不能生成图象,为什么??
LPBITMAPINFO bf=??;
bmp.CreateBitmap(bf->bmiHeader.biWidth,bf->bmiHeader.biHeight,bf->bmiHeader.biPlanes,bf->bmiHeader.biBitCount,bf->bmiColors);