Я столкнулся с типичной проблемой при повороте объекта. Описание приведено ниже. Я взял два CGPoint, скажем, point1 и point2
point1 = (50,50)
point2 = (150, 50)
эта точка будет рисовать горизонтальную линию.
Теперь я рисую прямоугольник с этой точкой. Ширина 100 и высота 10. Угол равен 0.
см. Снимок экрана
работает нормально,
теперь я меняю точку, скажем,
point1 = (50,50)
point2 = (50,150)
эта точка будет рисовать вертикальную линию.
Для прямоугольника Угол равен 90.
В этой точке прямоугольник отображается неправильно
см. Снимок экрана
Мой код для рисования прямоугольника:
CGPoint mid = CGPointMake((point1.x+point2.x)/2, (point1.y+point2.y)/2)
CGPoint UL = CGPointMake(mid.x + ( Width / 2 ) * cos (A) - ( Height / 2 ) * sin (A) , mid.y + ( Height / 2 ) * cos (A) + ( Width / 2 ) * sin (A));
CGContextMoveToPoint(context, UL.x,routeView.frame.size.height - UL.y);
CGPoint UR = CGPointMake(mid.x - ( Width / 2 ) * cos (A) - ( Height / 2 ) * sin (A) , mid.y + ( Height / 2 ) * cos (A) - ( Width / 2 ) * sin (A));
CGContextAddLineToPoint(context, UR.x,routeView.frame.size.height - UR.y);
CGPoint BR = CGPointMake(mid.x - ( Width / 2 ) * cos (A) + ( Height / 2 ) * sin (A) , mid.y - ( Height / 2 ) * cos (A) - ( Width / 2 ) * sin (A));
CGContextAddLineToPoint(context, BR.x,routeView.frame.size.height - BR.y);
CGPoint BL = CGPointMake(mid.x + ( Width / 2 ) * cos (A) + ( Height / 2 ) * sin (A) , mid.y - ( Height / 2 ) * cos (A) + ( Width / 2 ) * sin (A));
CGContextAddLineToPoint(context, BL.x,routeView.frame.size.height - BL.y);
CGContextAddLineToPoint(context, UL.x,routeView.frame.size.height - UL.y);
CGContextStrokePath(context);
Здесь A - это угол, и он не статичен, середина - это средняя точка point1 и point2.
для получения дополнительной информации см. это
Я что-то упускаю? Пожалуйста, помогите мне, если у вас есть идеи .......
Спасибо,