我以编程方式创建一个椭圆形状,但我找不到指定其位置的任何属性。 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. CSS定义形状椭圆
- 4. 椭圆几何自定义形状
- 5. 在画布上绘制像素椭圆
- 6. 沿着圆形的Qt动画椭圆
- 7. 椭圆图WPF动画
- 8. WPF网格椭圆重叠位置
- 9. QML画布旋转椭圆
- 10. 将文本“椭圆化”到画布上
- 11. 在触摸位置在HTML5画布上绘制圆形
- 12. 在椭圆内绘制文本椭圆内的另一个椭圆在画布上android
- 13. WPF画布中的形状不出现
- 14. 如何在XML使用形状绘制画一个半椭圆形(安卓)
- 15. css border-radius圆形变为椭圆形,位置:绝对
- 16. 动画画布形状从任何位置居中
- 17. wpf中的椭圆按钮
- 18. 如何放置一个椭圆形UITextField
- 19. 形状位置和渐变位置在HTML5画布中如何相关?
- 20. 如何在画布上设置圆形路径?
- 21. 如何在WPF应用程序中创建椭圆形按钮?
- 22. 如何在box2d中创建椭圆形状?
- 23. 椭圆公式中的位置
- 24. jQuery的“圆形状”动画
- 25. 如何创建椭圆形几何形状
- 26. 内部椭圆不在中心位置
- 27. 确定UIElement在画布上的位置
- 28. 如何在Android中裁剪椭圆形或面部形状的图像?
- 29. Pyqtgraph:如何绘制椭圆或圆形
- 30. 如何识别画布中的形状?
为什么没有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