设为首页 加入收藏

TOP

VC实现自绘图形输出到bmp(二)
2013-04-24 12:10:46 来源: 作者: 【 】 浏览:430
Tags:实现 图形 输出 bmp

 

  file.Write(&bmfh,sizeof(BITMAPFILEHEADER));

  file.Write(&(lpbmih->bmiHeader),sizeof (BITMAPINFOHEADER));

  file.Write(pBits,iBMPBytes);

  file.Close();

  }

  pMemDC->DeleteDC();

  delete pMemDC; pMemDC = NULL;

  delete pBitMap; pBitMap = NULL;

  delete lpbmih; lpbmih = NULL;

  }

  //输出文本和图形

  void CTestSaveBmpView::DrawCurve(CDC *pDC, CRect rcClient)

  {

  //页面背景色

  CBrush brushCtl;

  brushCtl.CreateSolidBrush(RGB(255,255,255));

  pDC->Rectangle(rcClient);

  pDC->FillRect(rcClient,&brushCtl) ;

  brushCtl.DeleteObject();

  CPen pen;

  pen.CreatePen(PS_SOLID, 1, RGB(255,0,0));

  CPen *oldPen = pDC->SelectObject(&pen);

  double xMin = 10.00f, xMax = 100.00f;

  double yMin = 10.00f, yMax = 200.00f;

  double dbX1 = (xMax- xMin)/100 + xMin;

  double dbY1 = 600/dbX1 ;

  for (int i=1; i<100; i++) //曲线

  {

  double dbX2 = (xMax- xMin)*i/100 + xMin;

  double dbY2 = 600/dbX2 ;

  pDC->MoveTo(int(rcClient.left+(dbX1 - xMin)*rcClient.Width ()/(xMax- xMin)),

  int(rcClient.bottom-(dbY1- yMin)*rcClient.Height()/(yMax- yMin)));

  pDC->LineTo(int(rcClient.left+(dbX2 - xMin)*rcClient.Width ()/(xMax- xMin)),

  int(rcClient.bottom-(dbY2- yMin)*rcClient.Height()/(yMax- yMin)));

  dbX1=dbX2;

  dbY1=dbY2;

  }

  pDC->SelectObject(oldPen);

  pen.DeleteObject();

  oldPen = NULL;

  }

  //保存的实现

  void CTestSaveBmpView::OnRButtonDown(UINT nFlags, CPoint point)

  {

  CFileDialog dlg(false,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,

  "位图文件(*.bmp)|*.bmp|",

  NULL);

  if (dlg.DoModal()!= IDOK) return;

  CString filename = dlg.GetFileName() + ".bmp";

  SaveAsBmp(filename);

  CView::OnRButtonDown(nFlags, point);

  }

      

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC和MFC的一些常见问题 下一篇VC获取物理网卡的MAC地址

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: