LineDDA函数使用

2014-11-05 21:30:04 · 作者: · 浏览: 63

  BOOL LineDDA( int nXStart, // x-coordinate of starting point


  int nYStart, // y-coordinate of starting point


  int nXEnd, // x-coordinate of ending point


  int nYEnd, // y-coordinate of ending point


  LINEDDAPROC lpLineFunc, // callback function


  LPARAM lpData // application-defined data);


  这个函数做动画十分方便,你可以利用前4个参数指定屏幕上任意2点的(x,y)坐标,此函数将以Bresenham算法计算出通过2点之直线中的每一个屏幕像素坐标;


  每计算出一个坐标,就通知由LineDDA第五个参数所指定的callback函数。这个callback函数的类型必须是:


  VOID CALLBACK LineDDAProc( int X, // x-coordinate of point


  int Y, // y-coordinate of point


  LPARAM lpData // application-defined data);


  通常我们在这个callback函数中设计绘图操作。玩过windows的接龙游戏吗?接龙成功后扑克牌的跳动效果就可以利用LineDDA完成。虽然扑克牌的跳动路径是一条曲线,


  但将曲线拆成数条直线并不困难。LineDDA的第六个参数可以视应用程序的需要传递一个32位指针,下面的例子中传递的就是一个DC。


  函数原型:


  static VOID CALLBACK LineDDAProc(


  int X, // x-coordinate of point


  int Y, // y-coordinate of point


  LPARAM lpData // application-defined data


  );