不明确的矩形构造函数

时间:2016-11-05 00:18:00

标签: c#

有关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的位置,所以我只能在创建对象后改变宽度和高度,而不是位置。

声明:

这确实是家庭作业的一部分,但是一个非常非常小的一个整体,因为我花了很多时间在这个简单的问题上(所以我假设)因此,我没有任何疑虑关于在这里问。

3 个答案:

答案 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;