《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 // 上面那个数组的个数
);
有批评欢迎留言呀,批评总比每次上来看到评论数是零的好。。。。。。
回归正题,这节其实很多但是都是些函数的使用,那用书上的索引加上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 // 上面那个数组的个数
);
相关文章推荐
- 《Windows程序设计》读书笔记------------->>滚动条使用(翻译自MSDN)<<
- 《Windows程序设计》读书笔记------------->>字符消息<<
- 《Windows程序设计》读书笔记------------->>设备内容之一<<
- 《Windows程序设计》读书笔记------------->>文字输出---------TextOut单行输出<<
- 《Windows程序设计》读书笔记------------->>基本滚动条<<
- 《Windows程序设计》读书笔记------------->>关于Unicode<<
- 《Windows程序设计》读书笔记------------->>窗口和消息 ---- 具体设定<<
- 《Windows程序设计》读书笔记------------->>GDI的简单基础<<
- 《Windows程序设计》读书笔记------------->>设备内容句柄之二<<
- 《Windows程序设计》读书笔记------------->>矩形、区域和剪裁<<
- 《Windows程序设计》读书笔记------------->>第一个应用程序<<
- 《Windows程序设计》读书笔记------------->>窗口和消息 -- 代码结构和消息机制<<
- 《Windows程序设计》读书笔记------------->>输出文字----绘制和更新<<
- 《Windows程序设计》读书笔记------------->>文字输出——多行文字<<
- 《Windows程序设计》读书笔记------------->>字符集和字体<<
- 《Windows程序设计》读书笔记------------->>GDI 映像方式<<
- 《Windows程序设计》读书笔记------------->>Virtual-Key Codes (虚拟键码)<<翻译自MSDN
- 《Windows程序设计》读书笔记------------->>鼠标基础和显示区域鼠标消息<<
- 《Windows程序设计》读书笔记------------->>键盘消息<<
- 读书笔记:machine-level representation of program<computer system a programmer perspective第二章>