2024年5月11日发(作者:)
VC画波形图 我要编写一个小软件读取信号并显示信号波形。
我的做法是创建基于对话框的应用程序主对话框类假设为
ADlg我在主对话框上留出一片区域用于显示波形新建了一
个基类为CWnd的类CImageWnd类希望对波形的绘制操作
ShowSignal在该类中完成。但是我在CImageWnd类的
OnPaint函数中无法使用自定义坐标系统而如果把显示信号
的操作ShowSignal放在ADlg类中却可以使用自定义坐标系
统。为什么在CImageWnd类的OnPaint函数中无法使用自定
义坐标系统 //////////////////////////////////////////// ///////////下面的
OnPaint函数老是出错 /////////////////////////////////////////// void
CImageWnd::ShowSignalint length const void lpShort
DataLengthlength ifData delete Data Datanew shortDataLength
memcpyDatalpShortDataLength Invalidate void
CImageWnd::OnPaint CPaintDC dcthis // device context for
painting // TODO: Add your message handler code here // CDC
pDCGetDC //
pDC00SRCCOPY // CDC
pDCGetDC CBrush brush1
HatchBrushHS_CROSSRGB128128128
Objectbrush1 glerect Object
short MaxDataFindAbsMaxDataDataDataLength//最大数据十
进制 short MaxshortMaxData1.1
ModeMM_ANISOTROPIC//设置映射模式为
MM_ANISOTROPIC //设置窗口左上角的坐标为0Max //
dowOrg0Max dowExtDataLength-2Max//
设置窗口度量 // wportOrg00//设置视口左上角的坐
标 //设置视口度量 //
创建蓝色实线画笔 CPen
penPS_SOLID1RGB00255pen1PS_SOLID1RGB25500
Objectpen//载入蓝色实线画笔 00 int x
short p forx0pDataxRectanglerect Object
lpLongSelectedlpLong SelectedLengthlength
MaxDataFindAbsMaxDatalpLonglength MaxlongMaxData1.1
pDC-SetMapModeMM_ANISOTROPIC//设置映射模式为
MM_ANISOTROPIC pDC-SetWindowOrg0Max//设置窗口左
上角的坐标为0Max pDC-SetWindowExtlength-2Max//设置窗
口度量 xWinExtlength yWinExt-2Max
pDC-SetViewportOrg2020//设置视口左上角的坐标
//设置视口度量
CPen penPS_SOLID1RGB00255pen1PS_SOLID1RGB25500
pDC-SelectObjectpen//载入蓝色实线画笔 pDC-MoveTo00 int
x long p forx0plpLongxSelectObjectpen1//载入红色实线画笔
pDC-MoveTo00//绘制X轴 pDC-LineTolength-10
Object Object ReleaseDCpDC 但是当程
序处于非顶层窗口时波形会消失。窗口重绘
////////////////////////////////////////////////////////// 根据经验判断是
SetMapMode引起的问题 最好int iMode
pDC-SetMapModeMM_ANISOTROPIC 在绘画操作结束后
加上pDC-SetMapModeiMode 正是因为这个的不同才引起了
你所提的问题希望对你有所帮助


发布评论