В настоящее время я реализую класс под названием SelectionBorder в WPF. Он получен из класса Shape.Создание SelectionBorder: бит в лице десятичным округлением?
Это в основном выглядит следующим образом:
public class SelectionBorder : Shape
{
public Point StartPoint {get; set;}
public PointCollection Points {get; set;}
public double StrokeLength {get; set;}
protected override Geometry DefiningGeometry{
get{
//Magic!
}
}
}
начальный и Пункты свойства определяют углы границы. Граница - типичная штриховая граница линии (один черный ход, один невидимый такт: - - - -)
Проблема, которая возникает у меня сейчас, заключается в том, что, поскольку угловые точки свободно выбираются, довольно часто считается, что количество штрихи (что означает черные и невидимые штрихи) даже не (на самом деле даже не целое), и поэтому первый штрих выглядит длиннее остальных (видимых на картинке). Возможно, это не похоже на большое дело, но позже я хочу анимировать границу, чтобы штрихи окружали контент. При выполнении этой анимации крошечный недостаток в статическом представлении становится ясно видимым и, на мой взгляд, очень тревожным.
alt text http://img14.imageshack.us/img14/2874/selectionborder.png
Проблема заключается в том, что я пытался определить StrokeLength, который получает, как близко к оригиналу, насколько это возможно StrokeLength и создает четное число ходов. Однако проблема, с которой я столкнулся, заключается в том, что WPF (очевидно) не может отобразить всю точность двойной десятичной StrokeLength, и поэтому полученный номер хода еще раз неровный.
Есть ли обходной путь для решения этой проблемы? Возможно, у вас есть другое решение для моей проблемы?
Заранее благодарен!
EDIT: Я пересмотрел и рассмотрел код после небольшого перерыва для фитнеса сегодня, и в конце концов это происходит только на очень больших StrokeLengths. Я планирую использовать StrokeLengths of 2, где маленький анимационный прыжок имеет значение намного меньше, чем я думал изначально.
Вы где прямо я, возможно, был немного, чтобы разборчивы. Совет с 2 отправными точками также очень хорош. Благодаря! – chrischu