| 查看: 165 | 回复: 2 | |||
| 当前主题已经存档。 | |||
| 【有奖交流】积极回复本帖子,参与交流,就有机会分得作者 tc1788 的 1 个金币 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[交流]
【求助】改变坐标原点的小程序 这么写对吗
|
|||
|
最后一个函数 注释的是源程序 注释下面的语句是我自己改的 坐标原点变了 DRAWBMP语句是这么改吗 我改完怎么没有图了啊 帮帮我吧 还用改别的吗 void CSolidSim: rawSolidRound(CDC *pDC, int startx, int starty){ CBrush brush; brush.CreateSolidBrush(RGB(255,0,0)); CBrush * oldBrush = pDC->SelectObject(&brush); //减去 0.5 是为了画出来的图美观,可以去掉。 下面画空心的部分同这个 pDC->Ellipse(startx, starty, startx + DIAMETER-0.5, starty + DIAMETER-0.5); pDC->SelectObject(oldBrush); brush.DeleteObject(); void CSolidSim::SaveAsBmp(CString in_name, CString filename) { //定义图形大小 int iWidth = 1000; int iHeight = 1000; int iPixel = 16; //图形格式参数 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; //创建位图数据 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_PAL_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); DrawBmp(pMemDC,rc,in_name); //保存到文件并创建位图结构 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); file.Close(); } pMemDC->DeleteDC(); delete pMemDC; pMemDC = NULL; delete pBitMap; pBitMap = NULL; delete lpbmih; lpbmih = NULL; } void CSolidSim: rawBmp(CDC *pDC, CRect rcClient, CString in_name){ CBrush brushCtl; brushCtl.CreateSolidBrush(RGB(255,255,255)); pDC->SelectObject(&brushCtl); pDC->Rectangle(rcClient); pDC->FillRect(rcClient,&brushCtl) ; brushCtl.DeleteObject(); int left = rcClient.left; //int top = rcClient.top; int bottom = rcClient.bottom; pDC->MoveTo(left, bottom); /*for(int x = 0; x<100 ; x++) { for(int y = 0; y<0 ; y++ ) { switch(a[x+y*100]) { case 2: DrawBlackRound(pDC, left +y * DIAMETER, top + x * DIAMETER); break; case 1: DrawSolidRound(pDC, left + y * DIAMETER, top + x * DIAMETER); break; case 0: //nothing to do break; } } } }*/ 改为 for(int y = 0; y<100 ; y++) { for(int x = 0; x<0 ; x++ ) { switch(a[x+y*100]) { case 2: DrawBlackRound(pDC, left +x * DIAMETER, bottom - y * DIAMETER); break; case 1: DrawSolidRound(pDC, left + x * DIAMETER, bottom - y * DIAMETER); break; case 0: //nothing to do break; } } } } 蓝色为源程序 粉色的我自己改的 坐标原点变了 DRAWBMP语句是这么改吗 我改完怎么没有图了啊 帮帮我吧 [ Last edited by tc1788 on 2009-6-12 at 09:46 ] |
» 猜你喜欢
孩子确诊有中度注意力缺陷
已经有14人回复
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
论文投稿,期刊推荐
已经有4人回复
请问2026国家基金面上项目会启动申2停1吗
已经有5人回复
wangen994
荣誉版主 (著名写手)
将军
- 程序强帖: 1
- 应助: 0 (幼儿园)
- 贵宾: 3.348
- 金币: 7797.4
- 散金: 404
- 红花: 5
- 帖子: 2007
- 在线: 242小时
- 虫号: 649482
- 注册: 2008-11-08
- 性别: GG
- 专业: 物理
- 管辖: 程序语言
3楼2009-06-12 12:23:36
woshilsh
荣誉版主 (职业作家)
- 应助: 43 (小学生)
- 贵宾: 10.33
- 金币: 21115.1
- 散金: 737
- 红花: 22
- 帖子: 3777
- 在线: 639.7小时
- 虫号: 293038
- 注册: 2006-11-04
- 专业: 计算机应用技术
- 管辖: 仿真模拟

2楼2009-06-12 11:09:28













rawSolidRound(CDC *pDC, int startx, int starty)
,NULL,NULL,NULL);
回复此楼