我使用DrawCurve和DrawClosedCurve動用我的PictureBox這樣的曲線:C# - 如何繪製像封閉曲線一樣的開放曲線?
if(isClosed) {
g.DrawClosedCurve(
new Pen(c, lineSize),
points,
tension,
FillMode.Alternate
);
} else {
g.DrawCurve(
new Pen(c, lineSize),
points,
tension
);
}
的問題是,我想開曲線看起來像閉合曲線,因爲現在,如果我用兩個曲線相同的張力(0.8f),他們是這樣的:
而且我真正想要的是,它看起來像這樣:
我該如何達到這個結果?我需要使用DrawBezier(或DrawBeziers)而不是DrawCurve嗎?如果是,我如何計算使用的控制點?此外,必須使用張力,以便用戶可以繪製不同類型的曲線。
=====編輯=====
我覺得我沒解釋什麼,我想正確的,所以我試圖想在另一個例子......
有這組點:
使用1.2F如緊張,DrawCurve繪製這樣的:
而且DrawClosedCurve這樣的:
現在我意識到,我真的不希望打開的曲線,如閉合曲線可以得出,但我真的想解決的是靠近第一點和最後一點的曲線。
曲線從逆時針運動開始,它們切換到順時針方向運動到下一個點。最後一點也是如此,但它從倒數第二個點開始順時針旋轉,並在下一個點的一半處逆時針切換(這也可以在第一個示例中看到)。所以,在這個例子中,我希望曲線從順時針運動開始,不需要切換到下一個點的中點,而是順時針運動。
但現在我不認爲有這個簡單的解決辦法,因爲我想從DrawCurve上的所有點,但第一和最後的正常行爲......
我相信這仍然可以實現通過使用DrawBezier,但我不知道如何計算具有張力的控制點......
這對我來說不起作用,因爲我需要張力,所以,如果用戶使用0.5f作爲張力,它應該仍然作爲橢圓的一部分,當它不應該是這樣的時候... – Thunderbert
@ Thunderbert Sry我誤解了你的問題。通過「不同類型的曲線」你是什麼意思? – 2015-11-03 20:37:12
我的意思是這一切都是由用戶定義,這意味着該點也是從用戶的輸入,而他的用戶想要點的特定羣體,它將標誌着它也將通知緊張,如果它是一個封閉或打開曲線。 – Thunderbert