CPen pen(线型,线宽,颜色),参数123分别为需要设置的型号(实线,虚线,点话画线等等),宽度(0-255),颜色(RGB)
具体如下:1)从CStatic派生,容易在对话框中使用。
2)能够随对话框的缩放自动改变大小,这里假设对话框中其它元素的位置基本不变。
3)曲线的粗细,颜色,线型(实,虚线)可以自由设置。
4)可以控制曲线的隐藏/显示。
5)两个坐标轴,Y轴根据数据自适应,实际数据最大最小值各偏离5%是坐标轴的最大最小值(简化起见,坐标轴采用五等分)。X轴是时间轴,一个像素点代表一个数据点,假设采样按一定的频率。
6)可以添加多条曲线。
7) 使用双缓冲,避免图形闪烁。
做一个CStatic派生控件的基本步骤:
1)定义一个从CStatic派生的类。
2)重载有关消息映射,WM_PAINT,WM_ERASEBKGND
3) 在OnPaint中绘图,在这里根据实际的需要做不同的计算,绘制。
大致可分为以下几步,I布局计算,CStatic是整个绘图区,将这个区域划分为边缘空白,坐标轴区,曲线区等几个部分,需要算出各个部分的矩形顶点,以便控制曲线的绘制。
mfc 通常在 CView 里的 OnDraw 画图CDC 有画图函数,例如直线,弧线,bitmap, 涂色...
void CXxxView::OnDraw(CDC* pDC)
{
CPoint p0,p[10]
CPen aPen[8]
CPen* poldPen
//定义各式各样线型和颜色,不定义则为 黑细实线。
aPen[0].CreatePen(PS_SOLID ,1,COLORREF(0x0000ff))aPen[1].CreatePen(PS_SOLID ,1,COLORREF(0x0090ff))
aPen[2].CreatePen(PS_SOLID ,1,COLORREF(0x40a0a0))
.....
aPen[7].CreatePen(PS_SOLID ,1,COLORREF(0x000000))
poldPen = pDC->SelectObject(&aPen[2])// 选线型和颜色aPen[2]
// CPoint p0,p[10]点的坐标值可以从 CDoc 传入,或这里给 p[i].y=cos(i*0.5),p[i].y=i*0.5
pDC->MoveTo(p0) // “笔”移到开始点p0,落笔
for (i=0i<10i++) pDC->LineTo(p[i])// “笔”画到p[0],p[1],..p[9]点
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)