Я ищу, чтобы показать скелет по эллипсу, а не по линии. У меня есть две точки с координатами для X и Y. Когда я хочу, чтобы нарисовать эллипс мне нужноDrawEllipse из двух совместных (координаты точки, или скорее X и Y)
public abstract void DrawEllipse(
Brush brush,
Pen pen,
Point center,
double radiusX,
double radiusY
)
так что я пытался с этим кодом, но есть какая-то ошибка (не знаю radiusY):
double centerX = (jointPoints[jointType0].X + jointPoints[jointType1].X)/2;
double centerY = (jointPoints[jointType0].Y + jointPoints[jointType1].Y)/2;
double radiusX =Math.Sqrt((Math.Pow((jointPoints[jointType1].X - jointPoints[jointType0].X), 2)) + (Math.Pow((jointPoints[jointType1].Y - jointPoints[jointType0].Y), 2)));
drawingContext.DrawEllipse(null, drawPen, new Point(centerX, centerY), radiusX, radiusX/5);
Может ли кто-нибудь мне помочь?
private void DrawBone(IReadOnlyDictionary<JointType, Joint> joints, IDictionary<JointType, Point> jointPoints, JointType jointType0, JointType jointType1, DrawingContext drawingContext, Pen drawingPen,List<JointType> badJoint)
{
Joint joint0 = joints[jointType0];
Joint joint1 = joints[jointType1];
// If we can't find either of these joints, exit
if (joint0.TrackingState == TrackingState.NotTracked ||
joint1.TrackingState == TrackingState.NotTracked)
{
return;
}
// We assume all drawn bones are inferred unless BOTH joints are tracked
Pen drawPen = this.inferredBonePen;
if ((joint0.TrackingState == TrackingState.Tracked) && (joint1.TrackingState == TrackingState.Tracked))
{
drawPen = drawingPen;
}
//If a bone makes parts of an one bad angle respect reference angle
if (badJoint.Contains(jointType0) && badJoint.Contains(jointType0))
drawPen = new Pen(Brushes.Red, 6);
drawingContext.DrawLine(drawPen, jointPoints[jointType0], jointPoints[jointType1]);
Какое сообщение об ошибке _exact_ вы получаете? См. Http://stackoverflow.com/help/mcve и http://stackoverflow.com/help/how-to-ask –
У меня нет ошибки, но я не показываю скелет, как хотелось бы. Эллипс не проходит через точки, и я не знаю, как задать радиус Y. Выше я разместил один экран Я думаю, что это сложнее, потому что x и y меняются при перемещении кости – luca
Вы можете сделать виртуальную линию между точками, а затем создать две 90-градусные поворотные меньшие виртуальные линии (например, 15% от общего количества line) в верхней и нижней частях большой виртуальной линии. Теперь просто получите поворот линии (Math.atan2) и нарисуйте повернутый эллипс. http://i.imgur.com/XybEThO.png – WebFreak001