Slider control 控件使用文档格式.docx
- 文档编号:17001980
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:16
- 大小:22.84KB
Slider control 控件使用文档格式.docx
《Slider control 控件使用文档格式.docx》由会员分享,可在线阅读,更多相关《Slider control 控件使用文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
用于设置滑动条刻度的频度。
默认为一个单位一个函数。
voidSetTicFreq(intnFreq);
*SetTic函数
用于在指定的位置设置刻度。
Windows默认的刻度是均匀的。
BOOLSetTic(intnTic);
*ClearTics函数
用于清除所有的刻度。
voidClearTics(BOOLbRedraw=FALSE);
我们在初始化时写入以下语句:
m_Slider.SetRange(-100,100);
m_Slider.SetTicFreq(10);
即:
设置范围为-100到100,刻度为每10个单位一个。
(5)现在我们加入事件过程代码。
选择Slider的“事件”然后选择第一个过程(NM_CUSTOMDRAW)随后加入以下代码:
voidCMy601Dlg:
OnCustomdrawSlider1(NMHDR*pNMHDR,LRESULT*pResult){UpdateData(TRUE);
m_Int=m_Slider.GetPos();
UpdateData(FALSE);
*pResult=0;
}
其中m_Int是定义的EDIT控件的类型为INT的变量。
至此我们的编辑工作结束了。
2:
画点画线
(1)画点
SetPixel()函数可以在指定的坐标位置按指定的颜色画点。
函数原型说明如下:
COLORREFCDC:
SetPixel(intX,intY,COLORREFcrColor);
其中,(X,Y)为点的坐标位置,crColor参数为点的颜色值。
如果函数调用成功,则函数返回像素的颜色值,否则返回值为-1。
颜色值通过RGB(Red,Green,Blue)来设置,其中三个参数取值0~255。
例如,在VcAPP项目中,在CVcAppView类中的OnDraw()函数中加入下列画点语句:
//绘制一组彩色点
pDC->
TextOut(20,20,"
point:
"
);
SetPixel(100,20,RGB(255,0,0));
SetPixel(110,20,RGB(0,255,0));
SetPixel(120,20,RGB(0,0,255));
SetPixel(100,20,RGB(255,255,0));
SetPixel(100,20,RGB(255,0,255));
SetPixel(100,20,RGB(0,255,255));
SetPixel(100,20,RGB(0,0,0));
SetPixel(100,20,RGB(255,255,255));
运行程序,查看运行结果。
(2)画直线和折线
画直线需要LineTo()和MoveTo()两个函数的配合使用。
LineTo()函数以当前位置所在的点为直线的起点,另指定一个点为直线的终点,画出一段直线。
直线的颜色通过画笔的颜色来设定,在后面介绍。
LineTo()函数原型说明如下:
直线的终点位置由(nXEnd,nYEnd)指定。
如果函数调用成功,那么该点就成为当前位置,并返回TRUE,否则返回FALSE。
MoveTo()函数只是将当前位置移动到指定位置,它并没有画出直线,其函数说明为:
BOOLCDC:
LineTo(intnXEnd,intnYEnd);
MoveTo(intX,intY);
示例:
在CVcAppView类中的OnDraw()函数中加入下列画点语句:
//绘制直线
TextOut(20,60,"
Line:
MoveTo(20,90);
LineTo(160,90);
Polyline()函数用来画一条折线,而PolyPolyline()函数则用来画多条折线,它们的函数原型说明如下:
DWORDcCount);
PolyPolyline(COUSTPOINT*lppt,COUSTDWORD*lpdwPolyPoints,
Polyline(COUSTPOINT*lppt,intcPoints);
在Polyline()函数中,lppt是指向折线顶点数组的指针,而cPoints是折线顶点数组中的顶点数。
例如,绘制一条具有4个顶点的折线,程序如下:
POINTpolylinepoint[4]={{70,240},{20,190},{70,190},{20,240}};
Polyline(polylinepoint,4);
在PolyPolyline()函数中,lppt是指向保存顶点数组的指针,而各条折线的顶点数则保存在lpdwPolyPoints参数所指向的数组中,最后的cCount参数指定折线的数目。
例如:
POINTpolypolylinePt[9]={{95,160},{120,185},{120,250},{145,160},{120,185},
{90,185},{150,185},{80,210},{160,210}};
DWORDdwPolyPoints[4]={3,2,2,2};
//分四段折线,分别占用3,2,2,2个顶点
PolyPolyline(polypolylinePt,dwPolyPoints,4);
注:
由于一条折线至少需要2个顶点,因此dwPolyPoints数组中的数不应该小于2。
(3)画弧线和曲线
通过Arc()函数画弧线或整个椭圆。
椭圆限定在一个矩形内,称为外接矩形。
Arc()函数的圆形说明如下:
intnXStartArc,intnYStartArc,intnXEndArc,intnYEndArc);
Arc(intnLeftRect,intnTopRect,intnRightRect,intnBottomRect,
其中,(nLeftRect,nTopRect)是外接矩形的左上角坐标值,(nRightRect,nBottomRect)是外接矩形的右下角坐标值。
而椭圆中心与点(nXStartArc,nYStartArc)所构成的射线与椭圆的交点成为弧线的起点,椭圆中心与点(nXEndArc,nYEndArc)所构成的射线与椭圆的交点成为弧线的终点。
椭圆上从始点到终点就形成一条弧线。
在Windows系统中,弧线从始点到终点的方向是逆时针方向,但可以通过SetArcDirection()函数将绘制弧线方向设置为顺时针方向。
示例,用Arc()绘制圆、圆弧和椭圆,程序如下:
for(i=0;
i<
6;
i++)
{
Arc(260-5*i,70-5*i,260+5*I,70+5*i,260+5*i,70,260+5*i,70);
}
for(i=3;
Arc(260-10*i,70-10*i,260+10*i,70+10*i,
(int)260+10*i*cos(60*3.1415926/180),
(int)70+10*i*sin(60*3.1415926/180),
(int)70-10*i*sin(60*3.1415926/180));
(int)260-10*i*cos(60*3.1415926/180),
(int)70-10*i*sin(60*3.1415926/180),
(int)70+10*i*sin(60*3.1415926/180));
Bezier曲线是最常见的非规则曲线之一。
Bezier曲线属于三次曲线,需要四个控制顶点来确定一条Bezier曲线,其中曲线通过第一点和最后一点,并且第一条边和最后一条边是曲线在起点和终点处的切线,从而确定了曲线的走向。
PolyBezier()函数可以画出一条或多条Bezier曲线,其函数原型说明如下:
PolyBezier(CONSTPOINT*lppt,DWORDcPoints);
其中,lppt参数是曲线控制顶点所组成的数组,cPoints参数表示lppt数组中的顶点数,一条Bezier曲线需要四个控制顶点。
如果lppt数组用于画多条Bezier曲线,第二条以后的曲线只需要三个控制顶点,因为后面的曲线总是把前一条曲线的终点作为自己的起点。
示例,给出四个控制顶点,画出一条Bezier曲线和特征多边形。
//绘制Bezier曲线
POINTpolyBezier[4]={{20,310},{60,240},{120,300},{160,330}};
Polyline(polyBezier,4);
PolyBezier(polyBezier,4);
(4)画封闭曲线
Windows中提供了一组画封闭曲线的函数,包括绘制矩形、多边性、椭圆等,这些画封闭曲线的函数不但可以利用画笔来画出轮廓线,同时还可以利用画刷来填充这些封闭曲线所围成的区域。
Rectangle()函数用来画矩形,其函数原型说明如下:
intnRightRect,intnBottomRect);
Rectangle(intnLeftRect,intnTopRect,
其中,参数nLeftRect和nTopRect给出了矩形左上角的坐标,而nRightRect和nBottomRect则给出矩形的右下角坐标。
Ellipse()函数的作用则是画椭圆形。
在Ellipse()函数中,椭圆是由其外接矩形来确定的,外接矩形的中心与椭圆中心重合,矩形的长与宽和椭圆的长短轴相等。
函数说明如下:
Ellipse(intnLeftRect,intnTopRect,
其中的参数说明与Rectangle()函数相同。
RoundRect()函数用来画圆角矩形,其函数的原型说明如下:
intnWidth,intnHeight);
intnRightRect,intnBottomRect,
RoundRect(intnLeftRect,intnTopRect,
其中的前四个参数与Rectangle()函数相同,nWidth表示圆角的宽度,nHeight表示圆角的高度。
Polygon()函数用来画封闭的任意多边形,其函数原型说明如下:
Polygon((COUSTPOINT*lpPoints,intcCount);
其中的参数说明与Polyline()函数相同。
但两个函数有区别,Polygon()函数会自动将起点和终点相连形成封闭的多边形,而Polyline()函数则画出多条折线,只有当最后一点与起点相同时才画出封闭的多边形。
示例,绘制矩形、圆角矩形、椭圆和多边形,程序如下:
//绘制矩形、圆角矩形、椭圆和多边形
Rectangle(190,270,250,310);
RoundRect(265,270,330,310,30,20);
Ellipse(260-50,200-30,260+50,200+30);
POINTpolygonPts[3]={{390,160},{430,220},{350,210}};
Polygon(polygonPts,3);
(5)画笔与画刷
(1)画笔
当绘制图形时,线条的属性,包括颜色、宽度、样式等都是由画笔来确定的。
程序员可以创建画笔,定义画笔的属性,从而画出多彩的图形。
创建画笔包括CreatePen()和CreatePenIndirect()两个函数。
MFC将这些函数封装在CPen类中,这样画笔就能够被视为对象进行处理。
下面介绍创建画笔的方法。
方法一:
直接构造一个CPen对象,并将定义画笔的参数传给它,例如:
CPenpen(PS-SOLID,1,RGB(255,0,0));
创建一个宽度为一个像素、实线和红色的画笔。
方法二:
首先声明一个没有初始化的CPen类对象,然后再用CreatePen()函数定义画笔的属性。
例如,
CPenPen;
Pen->
CreatePen(PS-SOLID,1,RGB(255,0,0));
方法三:
先声明一个CPen类对象和一个描述画笔结构的LOGPEN类对象,并填入画笔的属性值,然后调用CreatePenIndirect()函数来创建画笔。
如下所示:
LOGPENLogPen;
LogPen.lopnStyle=PS_SOLID;
LogPen.lopnWidth=1;
LogPen.lpenColor=RGB(255,0,0);
Pen.CreatePenIndirect(&
LogPen);
如果画笔被成功创建,那么两个函数返回TRUE,否则返回FALSE。
画笔包括样式、宽度和颜色三个属性。
表3.2列出了GDI画笔的样式。
表3.2GDI画笔的样式
样式
说明
PS_SOLID
创建实线笔
PS_DASH
创建虚线笔,只有当画笔宽度小于或等于1时有效
PS_DOT
创建点线笔,只有当画笔宽度小于或等于1时有效
PS_DASHDOT
点划线笔,只有当画笔宽度小于或等于1时有效
PS_DASHDOTDOT
双点划线笔,只有当画笔宽度小于或等于1时有效
PS_NULL
创建NULL笔,不绘制任何图形
PS_INSIDEFRAME
创建可以在封闭框架内部绘制直线的画笔。
画笔的宽度用像素个数来确定。
PS_DASH、PS_DOT、PS_DASHDOT和PS_DASHDOTDOT参数要求画笔宽度只能为1,其它参数可以创建任意宽度的画笔。
画笔的颜色是一个24位的RGB颜色,由RGB(rColor,gColor,bColor)来定义,三个参数取值0~255。
Windows预定义了三个实线、1个像素宽的画笔,它们是WHITE_PEN、BLACK_PEN和NULL_PEN,程序中可以直接使用这些画笔,方法如下:
Pen.CreateStockObject(WHITE_PEN);
在屏幕上绘制三组直线,第一组按不同线型绘制,第二组按不同宽度绘制,第三组按不同颜色绘制。
程序如下:
//画笔的样式、宽度和颜色
inti1;
intnPenStyle[]=
PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL,
PS_INSIDEFRAME,
};
CPen*pNewPen;
CPen*pOldPen;
//用不同样式的画笔
for(i1=0;
i1<
7;
i1++)
//构造新笔
pNewPen=newCPen;
if(pNewPen->
CreatePen(nPenStyle[i1],1,RGB(0,0,0)))
pOldPen=pDC->
SelectObject(pNewPen);
//选择新笔,并保存旧笔
//画直线
MoveTo(20,60+i1*20);
LineTo(160,60+i1*20);
//恢复原有的笔
SelectObject(pOldPen);
else
//出错提示
AfxMessageBox("
CreatePenErroe!
!
//删除新笔
deletepNewPen;
//用不同的宽度的笔绘图
for(i1=0;
CreatePen(PS_SOLID,i1+1,RGB(0,0,0)))
MoveTo(200,60+i1*20);
LineTo(340,60+i1*20);
//设置颜色表
structtagColor
intr,g,b;
}color[7]=
{255,0,0},{0,255,0},{0,0,255},
{255,255,0},{255,0,255},{0,255,255},{0,0,0},
//用不同颜色绘图
CreatePen(PS_SOLID,2,RGB(color[i1].r,color[i1].g,color[i1].b)))
MoveTo(380,60+i1*20);
LineTo(520,60+i1*20);
//画笔程序结束
(2)画刷
在进行区域填充或绘制封闭图形时,需要用到画刷。
MFC把GDI画刷封装在CBrush类中。
画刷分三种基本类型:
纯色画刷、阴影画刷和图案画刷。
纯色画刷绘图使用单色来定义,颜色由RGB()函数来确定。
纯色画刷可以采用直接声明的方法,例如:
CBrushBrush(RGB(255,0,0));
创建一个红色画刷。
也可以采用分步方法,由CreateSolidBrush()函数创建。
CBrushBrush;
Brush->
Create->
CreateSolidBrush(RGB(255,0,0));
Windows预定义了七种画刷,包括:
BLACK_BRUSH、DKGRAY_BRUSH、GRAY_BRUSH、LTGRAY_BRUSH、HOLLOW_BRUSH、NULL_BRUSH和WHITE_BRUSH。
可以参照CPen类的方法,采用CreateStockObject()来使用预定义的画刷。
阴影画刷使用预定义的六种阴影样式进行绘图。
表3.3列出了六种阴影样式。
表3.3六种阴影样式
阴影样式
说明
HS_BDIAGONAL
45度向下阴影线(从左到右)
HS_CROSS
水平线与垂直线交叉阴影
HS_DIAGCROSS
45度方向的交叉阴影线
HS_FDIAGONAL
45度向上阴影线(从左到右)
HS_HORIZONTAL
水平阴影线
HS_VERTICAL
垂直阴影线
创建阴影画刷的方法与纯色画刷的创建方法相似,例如创建一个45度方向的交叉阴影线的画刷,方法如下:
CBrushBrush(HS_DIAGCROSS,RGB(255,0,0));
或者
CreateHatchBrush(HS_DIAGCROSS,RGB(255,0,0));
函数中有两个参数,第一个参数是画刷的阴影样式,第二个参数是阴影线的颜色。
绘制缺省画刷的矩形,纯色画刷矩形和绘制100单位的矩形,并且用白色45度交叉线阴影将其填充,程序如下:
//画刷程序
Rectangle(300,300,400,400);
//缺省的画刷,白色
//纯色画刷
CBrush*pNewBrush1;
CBrush*pOldBrush1;
pNewBrush1=newCBrush;
if(pNewBrush1->
CreateSolidBrush(RGB(255,0,0)))
//选择新画刷
pOldBrush1=pDC->
SelectObject(pNewBrush1);
//绘制矩形
Rectangle(200,200,300,400);
//恢复原有画刷
SelectObject(pOldBrush1);
deletepNewBrush1;
//阴影画刷
CBrushBrush(HS_DIAGCROSS,RGB(255,255,255));
CBrush*pOldBrush;
pOldBrush=pDC->
SelectObject(&
Brush);
SetBkColor(RGB(192,192,192));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Slider control 控件使用 控件 使用