您的位置:首页 > 其它

《Windows程序设计》读书笔记------------->>开始画画!<<

2007-07-20 22:49 591 查看
从现在才开始发现,每一节的内容越来越多越来越难,每次要写得都有一大堆,我只好不断妥协,减少内容了了。原来为了给大家看得方便,就像用背景高亮的方式突出显示。但是我只是在写,不知道看的人看的不舒服。现在经liying828772提醒,以后改成粗体显示好了,谢谢了。

有批评欢迎留言呀,批评总比每次上来看到评论数是零的好。。。。。。

回归正题,这节其实很多但是都是些函数的使用,那用书上的索引加上MSDN的解释好了。

画点

SetPixel函数在指定的x和y坐标以特定的颜色设定图素:


COLORREF SetPixel(


HDC hdc, // 设备内容句柄


int X, // 点的x坐标


int Y, // 点的y坐标


COLORREF crColor // 点的颜色


);

GetPixel函数传回指定坐标处的图素颜色:


COLORREF GetPixel(


HDC hdc, // 设备内容句柄


int nXPos, // 点的x坐标


int nYPos // 点的y坐标


);

返回值为坐标点的颜色值

画直线

LineTo 画直线。


BOOL LineTo(


HDC hdc, // 设备内容句柄


int nXEnd, // 结束点的x坐标


int nYEnd // 结束点的y坐标


);



注意:这个需要设定起始点,也就是调用MoveToEx函数设定从哪里开始画。


BOOL MoveToEx(


HDC hdc, // 设备内容句柄


int X, // 开始点的x坐标


int Y, // 开始点的y坐标


LPPOINT lpPoint //用于储存前一个点的一个POINT结构指针,如果这个参数为NULL则不保存前一个点坐标。


);

然后可以用这个函数取得上面那个坐标:


BOOL GetCurrentPositionEx(


HDC hdc, // 设备内容句柄


LPPOINT lpPoint // POINT类型指针


);

它保存在POINT结构中,这个结构有这些东东:




typedef struct tagPOINT ...{


LONG x;


LONG y;


} POINT, *PPOINT;

pt.x,或者pt.y就可以用了。

 
Polyline和PolylineTo 画一系列相连的直线。

The Polyline function draws a series of line segments by connecting the points in the specified array. 『Polyline函数用于根据一个特定的数组画一系列直线』


BOOL Polyline(


HDC hdc, // 设备内容句柄


CONST POINT *lppt, // 点的数组


int cPoints // 数组中点的个数


);



The PolylineTo function draws one or more straight lines. 『PolylineTo与Polyline很像,但是它要用到MoveToEx函数设定起始点』


BOOL PolylineTo(


HDC hdc, // 设备内容句柄


CONST POINT *lppt, // 点的数组


DWORD cCount // 数组中点的个数


);





PolyPolyline函数画很多组相连的线段


BOOL PolyPolyline(


HDC hdc, // 设备内容句柄


CONST POINT *lppt, // 储存点的数组


CONST DWORD *lpdwPolyPoints, // 储存有几个点相连


DWORD cCount // 上面那个数组的个数


);





画曲线

Arc 画椭圆线。




BOOL Arc(


HDC hdc, // 设备内容句柄


int nLeftRect, // 矩形左上角的x坐标


int nTopRect, // 矩形左上角的y坐标


int nRightRect, // 矩形右下角的x坐标


int nBottomRect, // 矩形右下角的y坐标


int nXStartArc, // 开始弧度的x坐标


int nYStartArc, // 开始弧度的y坐标


int nXEndArc, // 结束弧度的x坐标


int nYEndArc // 结束弧度的y坐标


); //逆时针?











PolyBezier和PolyBezierTo 画贝塞尔曲线。

这个东西我也搞不懂,以前用PHOTOSHOP的时候就晕头转向的,我想会用这个用程序画图的,不是数学狂人就是程序狂人............不管它了@_@

ArcTo和AngleArc 画椭圆线。

ArcTo和Arc很像,就是它是连接“到”某处。从原来的点,连接到起点。


BOOL ArcTo(


HDC hdc, // 设备内容句柄


int nLeftRect, // 矩形左上角的x坐标


int nTopRect, // 矩形左上角的y坐标


int nRightRect, // 矩形右下角的x坐标


int nBottomRect, // 矩形右下角的y坐标


int nXRadial1, // 第一个弧度的x坐标


int nYRadial1, // 第一个弧度的y坐标


int nXRadial2, // 第二个弧度的x坐标


int nYRadial2 // 第二个弧度的y坐标


); //顺时针?




BOOL AngleArc(


HDC hdc, // 设备内容句柄


int X, // 圆心的x坐标


int Y, // 圆心的y坐标


DWORD dwRadius, // 圆半径


FLOAT eStartAngle, // 椭圆开始的度数


FLOAT eSweepAngle // 椭圆结束的度数


); //顺时针?





PolyDraw 画一系列相连的线以及贝塞尔曲线。


BOOL PolyDraw(


HDC hdc, // 设备内容句柄


CONST POINT *lppt, // array of points


CONST BYTE *lpbTypes, // line and curve identifiers


int cCount // count of points


);

懒~主要是我现在还是不怎么搞得懂贝塞尔曲线,以后用到再查MSDN好了,标记一下先

画图形:

Rectangle 画矩形。


BOOL Rectangle(


HDC hdc, // 设备内容句柄


int nLeftRect, // 矩形左上角的x坐标


int nTopRect, // 矩形左上角的y坐标


int nRightRect, // 矩形右下角的x坐标


int nBottomRect, // 矩形右下角的y坐标


);





Ellipse 画椭圆。


BOOL Ellipse(


HDC hdc, // 设备内容句柄


int nLeftRect, // 矩形左上角的x坐标


int nTopRect, // 矩形左上角的y坐标


int nRightRect, // 矩形右下角的x坐标


int nBottomRect, // 矩形右下角的y坐标


);





RoundRect 画带圆角的矩形。


BOOL RoundRect(


HDC hdc, // 设备内容句柄


int nLeftRect, // 矩形左上角的x坐标


int nTopRect, // 矩形左上角的y坐标


int nRightRect, // 矩形右下角的x坐标


int nBottomRect, // 矩形右下角的y坐标


int nWidth, // 椭圆的宽


int nHeight // 椭圆的高


);





Pie 画椭圆的一部分,使其看起来像一个派(PIE:)。


BOOL Pie(


HDC hdc, // 设备内容句柄


int nLeftRect, // 矩形左上角的x坐标


int nTopRect, // 矩形左上角的y坐标


int nRightRect, // 矩形右下角的x坐标


int nBottomRect, // 矩形右下角的y坐标


int nXRadial1, // 第一个弧度的x坐标


int nYRadial1, // 第一个弧度的y坐标


int nXRadial2, // 第二个弧度的x坐标


int nYRadial2 // 第二个弧度的y坐标


);





Chord 画椭圆的一部分,以呈弓形。


BOOL Chord(


HDC hdc, // 设备内容句柄


int nLeftRect, // 矩形左上角的x坐标


int nTopRect, // 矩形左上角的y坐标


int nRightRect, // 矩形右下角的x坐标


int nBottomRect, // 矩形右下角的y坐标


int nXRadial1, // 第一个弧度的x坐标


int nYRadial1, // 第一个弧度的y坐标


int nXRadial2, // 第二个弧度的x坐标


int nYRadial2 // 第二个弧度的y坐标


);





Polygon 多边形


BOOL Polygon(


HDC hdc, // 设备内容句柄


CONST POINT *lpPoints, // 点的数组


int nCount // 点的数目


);





PolyPolygon 多个多边形


BOOL PolyPolygon(


HDC hdc, // 设备内容句柄


CONST POINT *lpPoints, // 点的数组


CONST INT *lpPolyCounts, // 储存有几个点相连


int nCount // 上面那个数组的个数


);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐