现在的位置: 首页 > 综合 > 正文

wince简单绘图

2014年03月17日 ⁄ 综合 ⁄ 共 2350字 ⁄ 字号 评论关闭

=============================================================

标题:wince简单绘图

摘要:直线,矩形,椭圆,多边形等简单图形的绘制

备注:Windows CE + VS2005

日期:2010.4.27

姓名:朱铭雷

=============================================================

    创建画笔

    绘制图形之前,可以先创建一个自己想要的画笔。通过CreatePenCreatePenIndirect两个函数都可以实现。以CreatePen为例,函数原型如下:

HPEN CreatePen(

  int fnPenStyle,

  int nWidth,

  COLORREF crColor

);

    fnPenStyle是画笔类型。nWidth是以像素为单位的画笔的宽度。crColor是画笔颜色。

    例:创建一个实心的,3个像素宽度的红色画笔。

    HPEN hRedPen = CreatePen(PS_SOLID,3,RGB(255,0,0));

    绘制直线

    第一种方式是通过Polyline函数来完成,该函数执行一次可以绘制一条或多条直线。

BOOL Polyline(

  HDC hdc,

  const POINT* lppt,

  int cPoints

);

    lppt是指向POINT结构体数组的指针。cPoints是点的个数。

    例:利用Polyline绘制四条直线组成一个矩形

    POINT pts[5];

    pts[0].x = 100;

    pts[0].y = 20;

    pts[1].x = 200;

    pts[1].y = 20;

    pts[2].x = 200;

    pts[2].y = 120;

    pts[3].x = 100;

    pts[3].y = 120;

    pts[4].x = 100;

    pts[4].y = 20;

    Polyline(hdc,pts,5);

    第二种方式是利用MoveToExLineTo两个函数来完成画线的功能。利用MoveToEx函数移动到直线的起点,利用LineTo函数绘制到直线的终点。两个函数的使用非常简单。

WINGDIAPI BOOL WINAPI MoveToEx(

  HDC hdc,

  int X,

  int Y,

  LPPOINT lpPoint

);

 

WINGDIAPI BOOL WINAPI LineTo(

  HDC hdc,

  int nXEnd,

  int nYEnd

);

    例:

    //利用MoveToEx,LineTo绘制四条直线组成一个矩形

    MoveToEx(hdc,250,20,NULL);

    LineTo(hdc,350,20);

    LineTo(hdc,350,120);

    LineTo(hdc,250,120);

    LineTo(hdc,250,20);

    创建画刷

    在绘制矩形,椭圆,多边形前可以创建一个自己满意的画刷,用来填充这些图形。如果是获得系统的预定义画刷可以通过GetStockObject函数来完成。比如GetStockObjectWHITE_BRUSH),获取一个白色的画刷。创建实心画刷可以通过CreateSolidBrush函数来完成。

HBRUSH CreateSolidBrush(

  COLORREF crColor

);

    例:HBRUSH hBr = CreateSolidBrushRGB(0,0,255);//创建一个实心的蓝色画刷

    还有一个函数CreateDIBPatternBrushPt也可以用来创建画刷,通过该函数可以创建一个阴影形式的画刷,这种画刷通常用来填充棒图。

    绘制矩形

    通过Rectangle函数来实现,该函数使用当前画笔绘制矩形边界,使用当前画刷填充矩形内部。

BOOL Rectangle(

  HDC hdc,

  int nLeftRect,

  int nTopRect,

  int nRightRect,

  int nBottomRect

);

    例:Rectangle(hdc,0,0,10,10);//绘制一个长和宽都是10个像素的矩形

    绘制圆角矩形

    要绘制圆角矩形,可以使用RoundRect函数。

BOOL RoundRect(

  HDC hdc,

  int nLeftRect,

  int nTopRect,

  int nRightRect,

  int nBottomRect,

  int nWidth,

  int nHeight

);

    nLeftRectnTopRectnRightRectnBottomRect分别是矩形的左,上,右,下边界。

关键是最后两个参数,它们决定了圆角矩形的圆滑程度。简单点说nWidth就是圆角的宽度,nHeight是圆角的高度。

    例:RoundRect(hdc,300,150,400,250,30,30); //绘制圆角矩形   

绘制圆形或者椭圆形

    Ellipse函数来完成。

BOOL Ellipse(

  HDC hdc,

  int nLeftRect,

  int nTopRect,

  int nRightRect,

  int nBottomRect

);

    nLeftRect是圆形的左边界,nTopRect是圆形的上边界,nRightRect是圆形的右边界,nBottomRect是圆形的下边界。该函数同样使用当前画笔绘制圆形边界,使用当前画刷填充圆形内部。

    例:Ellipse(hdc,100,150,200,250); //绘制一个椭圆形

    绘制多边形

    绘制多边形可以通过Polygon函数来完成,其实也可以用Polyline来绘制,两者是基本相同的,不再赘述。

抱歉!评论已关闭.