我以編程方式創建一個橢圓形狀,但我找不到指定其位置的任何屬性。 Lines
有X1,Y1,X2,Y2,但在Ellipse形狀上沒有Center,Position,X,Y等。我怎樣才能做到這一點?如何在WPF中的畫布上指定橢圓形狀的位置?
回答
在屏幕上任意地方把形狀也許應該做所以在一個Canvas面板中(請參閱@ phoog的回覆)。但是,如果您將其放置在網格或其他面板中,則始終可以修改邊距屬性以將其放置在您想要的位置。
如果你想通過指定的中心點,而不是橢圓的左上角這樣做,你可以這樣做:
Ellipse CreateEllipse(double width, double height, double desiredCenterX, double desiredCenterY)
{
Ellipse ellipse = new Ellipse { Width = width, Height = height };
double left = desiredCenterX - (width/2);
double top = desiredCenterY - (height/ 2);
ellipse.Margin = new Thickness(left, top, 0, 0);
return ellipse;
}
我沒有檢查,這是你想要的到底是什麼編譯器,但希望你明白了。同樣,使用Canvas將超過使用非帆布板內緣的首選方法,但計算左側和頂部仍然採用同樣的原則:
Canvas.SetLeft(ellipse, desiredCenterX - (width/2))
Canvas.SetTop(ellipse, desiredCenterY - (height/2))
Canvas.Left and Canvas.Top。這一切都在文檔中的「如何繪製橢圓或圓」 http://msdn.microsoft.com/en-us/library/ms751563.aspx
在C#代碼,語法是這樣的:
謝謝,我試過那些代碼,但不起作用。我這樣做了:'ellipse.Canvas.Left',但是'Ellipse'對象沒有'Canvas'屬性。 – 2011-04-08 00:59:04
我編輯了我的答案以顯示C#語法。 Canvas.Left屬性(和.Top,.Bottom,.Right)是附加屬性。請參閱http://msdn.microsoft.com/en-us/library/ms749011.aspx上的概述 – phoog 2011-04-08 01:04:03
如果你有起點和終點以及作爲半徑和布爾如果它是順時針或不,然後使用我的功能:)
function ellipse(x1, y1, x2, y2, radius, clockwise) {
var cBx = (x1 + x2)/2; //get point between xy1 and xy2
var cBy = (y1 + y2)/2;
var aB = Math.atan2(y1 - y2, x1 - x2); //get angle to bulge point in radians
if (clockwise) { aB += (90 * (Math.PI/180)); }
else { aB -= (90 * (Math.PI/180)); }
var op_side = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2))/2;
var adj_side = Math.sqrt(Math.pow(radius, 2) - Math.pow(op_side, 2));
if (isNaN(adj_side)) {
adj_side = Math.sqrt(Math.pow(op_side, 2) - Math.pow(radius, 2));
}
var Cx = cBx + (adj_side * Math.cos(aB));
var Cy = cBy + (adj_side * Math.sin(aB));
var startA = Math.atan2(y1 - Cy, x1 - Cx); //get start/end angles in radians
var endA = Math.atan2(y2 - Cy, x2 - Cx);
var mid = (startA + endA)/2;
var Mx = Cx + (radius * Math.cos(mid));
var My = Cy + (radius * Math.sin(mid));
context.arc(Cx, Cy, radius, startA, endA, clockwise);
}
- 1. 在畫布中添加橢圓位置
- 2. 如何定位位置上的自定義畫布形狀
- 3. 畫布上的好橢圓?
- 4. 如何在畫布上移動橢圓
- 5. CSS定義形狀橢圓
- 6. 如何在畫布上繪製半橢圓形
- 7. 使用fabric.js繪製畫布形狀作爲橢圓形lauout
- 8. 如何獲取在WPF C#中的橢圓位置?
- 9. 橢圓幾何自定義形狀
- 10. 在畫布上繪製像素橢圓
- 11. 沿着圓形的Qt動畫橢圓
- 12. 橢圓圖WPF動畫
- 13. 在Java中移動橢圓和橢圓形狀?
- 14. 如何爲畫布形狀設置圓形內部陰影?
- 15. 如何在畫布上繪製光滑的橢圓
- 16. 如何確定用戶是否觸摸畫布中的橢圓?
- 17. WPF網格橢圓重疊位置
- 18. 如何在WPF中獲取按鈕在畫布上的位置?
- 19. QML畫布旋轉橢圓
- 20. 將文本「橢圓化」到畫布上
- 21. C# - WPF - 確定畫布中的鼠標位置僅適用於形狀頂部
- 22. 在觸摸位置在HTML5畫布上繪製圓形
- 23. WPF C#橢圓網格定位
- 24. WPF畫布中的形狀不出現
- 25. 在橢圓內繪製文本橢圓內的另一個橢圓在畫布上android
- 26. 如何將形狀拖放到指定的類畫布中
- 27. 如何在橢圓形狀上書寫文字
- 28. 指定畫布的位置在Swing
- 29. 如何在XML使用形狀繪製畫一個半橢圓形(安卓)
- 30. 如何放大WPF中的橢圓?
爲什麼沒有Left屬性? WPF是如此奇怪... – Kamil 2013-05-28 19:18:45
@Kamil在這種情況下的定位是contanier的屬性,而不是橢圓本身。在畫布中,您可以設置Canvas.Left屬性。確實很奇怪...... – heltonbiker 2013-05-29 16:18:56
@heltonbiker我想這是爲什麼它是這樣設計的,但我沒有發現這個理由。 – Kamil 2013-05-31 02:04:28