一、上下翻转
上下翻转的点对应关系
1->4
2->3
3->2
4->1
算法分析
还需要背景大小的垂直中间的位置,也就是中间Y的位置
每个点,X 不变,Y变
上下翻转算法
//oldPoint为原来的点,background为背景的大小
var newPoint = new Point
{
X = oldPoint.X,
//|1-2-3-4-5-6-7-8-9-10| 总长度为10,如果是从8的位置翻转,则会变到2的位置
Y = background.Height - oldPoint.Y
};
二、左右翻转
左右翻转的点对应关系
1->2
2->1
3->4
4->3
算法分析
还需要背景大小的水平中间的位置,也就是中间X的位置
每个点,X 变,Y不变
左右翻转算法
//oldPoint为原来的点,background为背景的大小
var newPoint = new Point
{
//|1-2-3-4-5-6-7-8-9-10| 总长度为10,如果是从8的位置翻转,则会变到2的位置
X = background.Width - oldPoint.X,
Y = oldPoint.Y
};
三、延伸
按照上述思路,可以实现多边形的上下左右翻转
水平旋转算法待研究补充…