MFC如何临时创建静态图表绘图?
来源:百度知道 编辑:UC知道 时间:2024/05/27 12:59:54
主要问题如下:
我读入数据n,还有n个坐标(x1,y1)...(xn,yn),然后在MFC的界面上面画出n个静态图,每个图的位置是(Xi,Yi),i=1,2,3...n。
怎么才能在运行中创建静态图呢?以前都是在运行之前就确定好数量和图形位置的,现在要运行以后才能确定,怎么办?
创建类变量:
HBITMAP* m_phBmp;
用户界面初始化时分配内存并装载图片
m_phBmp = new HBITMAP[n];
m_phBmp[0] = (HBITMAP)LoadImage(NULL, _T("1.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
m_phBmp[1] = (HBITMAP)LoadImage(NULL, _T("2.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
...
如果文件名有规律的话可以放入一循环装载
OnPaint内:
PAINTSTRUCT ps;
HDC hdc;
BITMAP bmp;
HDC hdcMem;
hdc = ::BeginPaint(m_hWnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
GetObject(m_phBmp[0], sizeof(BITMAP), &bmp);
SelectObject(hdcMem, m_phBmp[0]);
BitBlt(hdc, x1, y1, bmp.bmWidth, bmp.bmHeight, hdcMem, 0, 0, SRCCOPY);
GetObject(m_phBmp[1], sizeof(BITMAP), &bmp);
SelectObject(hdcMem, m_phBmp[1]);
BitBlt(hdc, x2, y2, bmp.bmWidth, bmp.bmHeight, hdcMem, 0, 0, SRCCOPY);
....
DeleteDC(hdcMem);
::EndPaint(