graph.DrawImage(m_pImageClock1, points, 3);
bFly=!bFly;
// 坐标原点在表盘中央
int OxyX=140;//m_BakWidth/2+8;
int OxyY=90;//m_BakHeight/2+10;
// 得到系统时间
SYSTEMTIME SystemTime; // address of system time structure
GetLocalTime(&SystemTime);
//Matrix matrixH(a,b,c,d,tx,ty);
//Matrix 的计算其实很简单,就只有两行的公式:
//X’ = a*X + c*Y + tx; Y’ = b*X + d*Y + ty;
//a = 控制 X 的宽度 ;b = 控制 Y 的倾斜 ;c = 控制 X 的倾斜 ;d = 控制 Y 的高度
//tx = 控制 X 坐标位置 ;ty = 控制 Y 坐标位置
Matrix matrixH(1,0,0,1,OxyX,OxyY); // 定义一个单位矩阵,坐标原点在表盘中央 // 参数定义为宽度比例为 1 ,无任何的倾斜,高度比例 1 , xy 坐标为 100
//Math.rotate((50/180)*Math.PI) , 这里是要求旋转 50 度
// 公式为: X' = cos(50)*X + sin(50)*Y + tx; Y' = -sin(50)*X + cos(50)*Y + ty;
matrixH.Rotate(SystemTime.wHour*30+SystemTime.wMinute/2.0-180); // 时针旋转的角度度
Point pointsH[] = { Point(0, 0),Point(m_HourWidth, 0),Point(0, m_HourHeight)};
// 该矩形是 / 被旋转的对象(注意:三个点可以确定一个矩形)
//Matrix.translate(tx1, ty2); // 这里的 tx1 和 ty1 是所要递增或递减原有 tx 和 ty 的数值,相当 // 平移旋转中心坐标
matrixH.Translate(-m_HourWidth/2,-m_HourHeight/6);
matrixH.TransformPoints( pointsH, 3); // 用该矩阵转换 points, 即将矩形转换完毕并 保存在这三个点中
graph.DrawImage (m_pImageHHour,pointsH, 3);// 显示该图片在 pointsH 矩形区域中
Matrix matrixM(1,0,0,1,OxyX,OxyY); // 定义一个单位矩阵,坐标原点在表盘中央
matrixM.Rotate(SystemTime.wMinute*6-180); // 分针旋转的角度度
Point pointsM[] = { Point(0, 0),Point(m_MinuWidth, 0),Point(0, m_MinuHeight)};
matrixM.Translate(-m_MinuWidth/2,-m_MinuHeight/6);
matrixM.TransformPoints( pointsM, 3); // 用该矩阵转换 pointsM
graph.DrawImage (m_pImageHMinu,pointsM, 3);
Matrix matrix(1,0,0,1,OxyX,OxyY); // 定义一个单位矩阵,坐标原点在表盘中央
matrix.Rotate(SystemTime.wSecond*6-180); // 秒针旋转的角度度
Point pointsS[] = { Point(0, 0),Point( m_SecWidth,0),Point(0,m_SecHeight )};
matrix.Translate(-m_SecWidth/2,-m_SecHeight/7);
matrix.TransformPoints( pointsS, 3); // 用该矩阵转换 pointsS
graph.DrawImage (m_pImageHSec,pointsS, 3);
// 下面是时间数字显示,他的工作原理是截取原始图片上的图放在相应位置,比如 1 ,:图片 // 都是截取过来的
// 函数: Status DrawImage( Image* image, INT x, INT y, INT srcx, INT srcy,
// INT srcwidth, INT srcheight, Unit srcUnit);
// 参数说明 (x,y) 用来指定图像 image 显示的位置,这个位置和 image 图像的左上角点相对应。
// srcx 、 srcy 、 srcwidth 和 srcheight 用来指定要显示的源图像的位置和大小, srcUnit 用来指 // 定所使用的单位,默认时使用 PageUnitPixel ,即用像素作为度量单位
//H
graph.DrawImage(m_pImageNum,0, 0, 14*(SystemTime.wHour/10), 0,14,23,UnitPixel); // 该函数从 m_pImageClock 中剪切指定 rect 中的像素 draw 到指定位置
graph.DrawImage(m_pImageNum,20,0,14*(SystemTime.wHour%10),0,14,23,UnitPixel); // 该函数从 m_pImageClock 中剪切指定 rect 中的像素 draw 到指定位置
graph.DrawImage(m_pImageNum,20*2,0, 140, 0,14,23,UnitPixel);
// 该函数从 m_pImageClock 中剪切指定 rect 中的像素 draw 到指定位置 M
graph.DrawImage(m_pImageNum,20*3,0,14*(SystemTime.wMinute/10),0,14,23,UnitPixel); // 该函数从 m_pImageClock 中剪切指定 rect 中的像素 draw 到指定位置
graph.DrawImage(m_pImageNum,20*4,0,14*(SystemTime.wMinute%10), 0,14,23,UnitPixel); // 该函数从 m_pImageClock 中剪切指定 rect 中的像素 draw 到指定位置