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

来源:互联网 发布:衣服颜色搭配 知乎 编辑:程序博客网 时间:2024/04/27 13:35

从现在才开始发现,每一节的内容越来越多越来越难,每次要写得都有一大堆,我只好不断妥协,减少内容了了。原来为了给大家看得方便,就像用背景高亮的方式突出显示。但是我只是在写,不知道看的人看的不舒服。现在经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                // 上面那个数组的个数
); 
原创粉丝点击