有关System.Windows.Shapes中Rectangle构造函数的快速问题。我尝试使用以下代码创建一个Rectangle对象。
dataGrid.Columns.Add(new DataGridTextColumn { Header = "n", Binding = new Binding("n") { StringFormat = "{0:n2}" } });
但是,我得到一个错误,说Rectangle构造函数不带4个参数。经过一些广泛的研究,文档提供了几个显式构造函数,例如这两个。
Rectangle rect1 = new Rectangle(5,5,5,5);
和
Rectangle(int32,int32, int32, int32);
我尝试过使用它们,并且它都不接受,给出了Rectangle类不接受2或4个参数的错误。但是,当我没有通过任何论点时,它运行正常。问题是没有办法访问Rectangle的位置,所以我只能在创建对象后改变宽度和高度,而不是位置。
声明:
这确实是家庭作业的一部分,但是一个非常非常小的一个整体,因为我花了很多时间在这个简单的问题上(所以我假设)因此,我没有任何疑虑关于在这里问。
答案 0 :(得分:3)
在.Net中有两个Rectangle类:
System.Drawing.Rectangle(Int32,Int32,Int32,Int32);
System.Drawing.Rectangle(Point, Size);
和
System.Windows.Shapes.Rectangle();
答案 1 :(得分:3)
在评论中来回回复之后,这个就是你真正想要的:Canvas
中的一个UI元素,描绘了一个矩形形状。
var rect = new System.Windows.Shapes.Rectangle();
// Capital C Canvas: Static methods of System.Windows.Canvas, setting what are
// called "attached properties" in WPF. This is very weird if you're new to WPF, sorry.
Canvas.SetLeft(rect, 5);
Canvas.SetTop(rect, 5);
rect.Height = 5;
rect.Width = 5;
// canvas, lowercase c, is your instance of System.Windows.Canvas
canvas.Children.Add(rect);
使用WPF,我更喜欢使用XAML而不是C#来创建UI元素:
<Canvas Width="300" Height="300">
<Ellipse
Stroke="DeepSkyBlue"
Width="30"
Height="30"
Canvas.Left="40"
Canvas.Top="40"
/>
<Rectangle
Stroke="Black"
StrokeThickness="1"
Canvas.Left="20"
Canvas.Top="20"
Width="100"
Height="100"
/>
</Canvas>
其他可能的答案,在这种情况下均不适用
如果您使用winforms,请改用System.Drawing.Rectangle
。那是你正在阅读的那个the documentation for(实际阅读文档的荣誉 - 很少有人这样做)。
您可能必须在项目中添加对System.Drawing.dll的引用(在VS中项目树的References中)。
在WPF中,您可以使用该类或System.Windows.Rect
。那个使用双精度浮点值而不是整数。选择适合手头任务的那个。 WPF中的UI内容都是浮点数,因此Rect
可能是最好的。
Shapes中的那个是其他东西。
如果System.Windows.Shapes位于顶部的使用行中,请删除(如果可以)。
但是如果你需要保留它,这总是适用于模棱两可的情况:
var rect = new System.Drawing.Rectangle(5,5,5,5);
var r2 = new System.Windows.Rect(5,5,5,5);
答案 2 :(得分:1)
更改命名空间,如下所示。如果需要,请添加对System.Drawing.dll
的引用。
//using System.Windows.Shapes;
using System.Drawing;