| 查看: 166 | 回复: 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 ] |
» 猜你喜欢
导师想让我从独立一作变成了共一第一
已经有5人回复
博士读完未来一定会好吗
已经有20人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有11人回复
读博
已经有4人回复
JMPT 期刊投稿流程
已经有4人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有9人回复
申请2026年博士
已经有6人回复













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