作者:曹衡斌_307 | 来源:互联网 | 2023-05-17 22:42
今天在做图像旋转时遇到了一个问题。图像是转好了,鼠标点按下的坐标也知道了,但是就不知道怎么判断在不在旋转后的图像里(当然用眼睛去看鼠标点按下的的位置,肯定是知道在不在旋转后的图像里的。~_~)。
今天在做图像旋转时遇到了一个问题。图像是转好了,鼠标点按下的坐标也知道了,但是就不知道怎么判断在不在旋转后的图像里(当然用眼睛去看鼠标点按下的的位置,肯定是知道在不在旋转后的图像里的。~_~)。后面在网上查了一下,也没有一个现成可以用的算法代码。没办法,只能结合网上查的资料自己写了。现在已经写好了,所以就写出来供大家参考一下。
矩形没经过旋转时的左上角的坐标为(LeftUpX,LeftUpY), 右下角的坐标为(RightDownX,RightDownY),在矩形旋转角度为O之后,求此时按下的鼠标点(X,Y)在不在矩形内。
解决方案如下:(以下)
/*1、此时的矩形已经旋转了O度,那么第一步就是要还原鼠标点*/
/*矩形的长宽*/
int w = RightDownX - LeftUpX;
int h = RightDownY - LeftUpY;
/*矩形中心点坐标*/
Point center;
center.X = LeftUpX + w/2;
center.Y = LeftUpY+ h/2;
/*还原鼠标点*/
int nTempX, nTempY;
nTempX = center.X + (X - center.X)*cos((-O)*(PI/180)) - (Y - center.Y) * sin((-O)*(PI/180));
nTempY = center.Y + (X - center.X)*sin((-O)*(PI/180)) + (Y - center.Y) * cos((-O)*(PI/180));
/*2、判断还原后的鼠标点在不在没旋转的矩形内,如果还原后的鼠标点在没旋转的矩形内,那么鼠标点(X,Y)同样在旋转O度之后的矩形内,否则不在。*/
if(nTempX> LeftUpX &&nTempXnTempY> LeftUpY &&nTempY
{
//鼠标点(X,Y)在旋转O度之后的矩形内
}
第一次写博客,不好的地方请大家多多谅解!!!