我目前在WPF中實現了一個名爲SelectionBorder的類。它來源於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的整體精度,因此生成的筆畫編號再次不平衡。
有沒有解決這個問題的方法?你可能有我的問題的另一種解決方案?
在此先感謝!
編輯:我今天重新測試並審查了休息一段時間後的代碼,之後它只發生在非常大的StrokeLengths上。我計劃使用2的StrokeLengths,其中跳動的小動畫比我原先想象的要少得多。
你正確的地方,也許我是有點挑剔。 2個出發點的建議也非常好。謝謝! – chrischu 2009-08-19 19:29:46