政务网站开发合同,中国工业设计网站,萧山市seo关键词排名,泉州建设公司网站的公司前言 续鼠标类设计之1#xff0c;前面解决了鼠标信号问题#xff0c;这里解决显示问题
引入 鼠标伴随操作系统而生#xff0c;考虑在屏幕上怎样显示
思路 1鼠标显示是一个动态效果#xff0c;所以需要一个“动态效果类”对象#xff0c;添加进鼠标类的属性里。 在面…前言 续鼠标类设计之1前面解决了鼠标信号问题这里解决显示问题
引入 鼠标伴随操作系统而生考虑在屏幕上怎样显示
思路 1鼠标显示是一个动态效果所以需要一个“动态效果类”对象添加进鼠标类的属性里。 在面向对象的程序中对象模拟的个体可以有动作---漆匠对象模拟的动作也可以是对象。所以有了Painter类和Paint类。-----------来自“初识类” 这里建立起一个MouseMove的类并将其作为成员属性添加进鼠标类中 class Mouse{public:/*下列状态表示左击右击双击拖拽卷动鼠标平移升降冻结*/enum State{LCLICK,RCLICK,DCLICK,DRAG,ROLL,MOVE,RISE,FREEZE};private:State state;MouseMove mouseMove; //新增鼠标移动类对象public:Mouse();State getState(MouseInfo mi); //传入鼠标信息类对象获取状态
}2鼠标显示是动态效果采用一种思路动态静态效果的叠加 所以建立一个类来实现静态的初始的效果也就是资源类映射到硬件寄存器。目的是屏幕上显示出鼠标的外观。假设鼠标外观是个箭头,命名新类Arrow.
静态类实现 现在已经有了静态类的目的:屏幕上生成一个箭头,来实现它.
class Arrow{private:vectorPoint points;public:Arrow(int x,int y);接口函数;
}
----接口函数是硬件供应商提供的,把采集到的点传入,得到箭头形状. 这里我们能做的是采集相应的点.可以在构造方法里写出来..具体如何采集,可以自己硬写,也可以用计算机图形学的知识,笔者没有这方面的知识积累,所以先放一下.
效果类实现 鼠标在屏幕上移动的效果,可以看作在不同的位置画箭头. 有了这个思路,可以写出效果类
class MouseMove{private:MouseInfo mi; //鼠标信息类对象传入public:MouseMove(MouseInfo MI):mi(MI){}; //构造函数void work();
} 实现鼠标的移动
void MouseMove::work(){int moveTempmi.move; //提取鼠标横坐标int riseTempmi.rise; //提取鼠标纵坐标Arrow *arrownew Arrow(moveTemp,riseTemp); //生成箭头接口函数; //显示箭头if(mi.move!moveTemp||mi.rise!riseTemp){Arrow *new_arrownew Arrow(mi.move,mi.rise); //重新生成箭头接口函数; //重新显示箭头 delete(arrow);}
}
代码重构 如果你没有被上面的代码所吓倒,那么我们可以继续. 如果我们想要鼠标不只是箭头这一种图案,而需要更多选择,例如鼠标做成一朵花flower的图案,那么上面的代码肯定不满足要求. 现在考虑把MouseMove设置成接口,
class MouseMove{public:Virtual void work()0;
}