准备做个实时显示网络流量的曲线,使用VC6,MFC生成一名为Realtime_Monitor对话框,并在函数void CRealtime_MonitorDlg::OnPaint() 中加入了绘制坐标系的代码。 现在准备画曲线,可发现需要在计算流量的全局函数中加入绘制曲线的代码。我对获取设备环境DC搞得不太明白,在void CRealtime_MonitorDlg::OnPaint()中也只使用了CPaintDC dc(this);而已,现在不知道如何获取对话框的设备环境,我画的线很简单,只需要Moveto和Lineto之类的函数,只是不知道如何得到对话框的设备环境,请知道的高手指点。 还有,顺便问一句,有没有可以擦掉已经画出的图形的函数或者让整个坐标系平移的函数。 谢谢。
解决方案 »
- 怎么用VC的ComBox仿照QQ登陆界面,输入若干个文字或字母信息时自动匹配显示已存在的用户名信息?
- 下面几个警告是神马警告,研究3个通宵了,貌似和消息map有关系,帮我看看啊
- 基础问题
- 进程运行时间
- 请问高手,如何检测出系统中安装了多个WINDOWS系统?并获得其安装目录?多谢!
- 请问各位如何用installshield打包?
- 这么晚了 还有兄弟在线吗?有的过来帮个忙
- 急问大侠一个问题:在windows20003下,为什么不能通过CreateProcess来启动一个进程?
- 怎样知道互联网上,HTTP服务器的服务器名和端口号??
- VC中如何设置控件的焦点顺序?请教了
- 用API写一个定义位图资源并在界面上显示的问题
- 多个线程同时访问一个指针的时候会不会出现冲突?错误?链表中一个指针变量,当修改它的时候如何将他锁定,也就是不让别的进程访问?
PDC-Lineto();pDC->Moveto();
至于擦掉已经画出的图形的,你可以用Invalidate()函数
'GetDC':function does not take 0 patameters
还有参数吗?
HDC GetDC( HWND hWnd // handle of window
);
让整个坐标系平移的函数没有,得自己做.
CDC* pDC=GetDlagItem(IDC_**你要画图的地方**)->GetDC();//获得画图区域句柄
然后再用
pDC->MoveTo(x,y);
pDC->LineTo(x,y);来画图
在C******View.h里的protected:
定义
void DrawCurve(CDC* pDC);
在C******View.cpp定义全局变量BOOL m_DrawFlag=FALSE;
void C******View::OnDrawcurve()//响应画图的消息 一个响应画图的按钮函数
{
m_DrawFlag = TRUE;
SendMessage(WM_PAINT);
}
重载OnPaint函数
void C******View::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
if(m_DrawFlag)//画曲线,响应OnDrawcurve()的消息
DrawCurve(&dc);
// Do not call CFormView::OnPaint() for painting messages
}
void C******View::DrawCurve(CDC* pDC)
{
pDC =GetDlgItem(IDC_BITMAP)->GetDC();//获得画图区域句柄
// 创建画笔对象
CPen* pPen = new CPen;
// *色画笔
pPen->CreatePen(PS_SOLID,1,RGB(58,110,165));//兰色
// 选中当前*色画笔,并保存以前的画笔
CGdiObject* pOldPen = pDC->SelectObject(pPen);
pDC->MoveTo(x,y);
pDC->LineTo(x,y);//画图
.......
ReleaseDC(pDC);//销毁DC
}