2016-11-05 10 views
1

System.Windows.ShapesのRectangleコンストラクタについて簡単に質問します。次のコードを使用してRectangleオブジェクトを作成しようとしています。あいまいな長方形のコンストラクタ

Rectangle rect1 = new Rectangle(5,5,5,5); 

しかし、私は、Rectangleコンストラクタが4つの引数を取らないというエラーが発生します。いくつかの広範な研究の後、ドキュメンテーションは、これら2つのような明示的なコンストラクタをいくつか提供します。

Rectangle(int32,int32, int32, int32); 

Rectangle(Point, Size); 

私は両方を使用してみましたが、それはRectangleクラスが2つのまたは4のいずれかの引数を受け入れないというエラーを与えて、どちらも負いません。しかし、私はそれに引数を渡さないと、うまく動作します。問題は、矩形の位置にアクセスする方法がないため、場所を作成するのではなく、オブジェクトを作成した後にしか幅と高さを変更できないということです。

免責事項:

これは確かに宿題の一部ですが、より大きな全体の非常に、非常に小さな作品、そして私はこの1つの単純な問題に多くの時間を費やしてきたように(私は仮定)したがって、私はここで尋ねることについて喜んでいません。 .NETで

+0

定義を確認しました。それは名前空間System.Windows.Shapes –

+2

です。ドキュメントを読むときは注意してください。キー情報は目立たない場所に隠されています。上部の「ネームスペースとアセンブリ」のセクションを参照してください。アセンブリは、1つまたは複数のファイル(通常は1つ)で、アセンブリメタデータを持つファイルです。メタデータでは、アセンブリには名前が与えられ、任意の型が宣言されていれば、それらがリストされます。型は階層的な名前空間にあります。型、名前空間、アセンブリ、ファイルの名前はすべて独立しています。名前空間上のドキュメントは、通常、特定のアセンブリのセットのコンテキスト内にあります。任意の数のアセンブリは、同じ名前の名前空間と型を持つ関連型または無関係型を持つことができます。 –

+0

私はそれをすべて得ているとは確信していませんが、ありがとうございます。 –

答えて

3

はこのはあなたが実際に何をしたいです:のUI要素Canvasであり、長方形を描いている。 WPFで

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); 

、私は、UI要素の作成にかなりのC#よりも、XAMLで働くことを好む:あなたがしている場合は

<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(実際にはドキュメントを読むための名誉 - ほんの少しです)。

おそらく、プロジェクトにVS内のプロジェクトツリー内の参照のSystem.Drawing.dllへの参照を追加する必要があります。

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); 
+0

ああ、それはあいまいさを説明するでしょう。しかし、私はどうすればそれについて行きますか?コードにSystem.Drawingを使用して追加しましたが、それでも私には同じエラーが表示されます。 –

+0

コードは表示できますか? –

+0

矩形rect1 =新しい矩形(5,5,5,5); –

3

2つのRectangleクラスがあります。コメント欄でいくつかの前後に後

System.Drawing.Rectangle(Int32,Int32,Int32,Int32); 
System.Drawing.Rectangle(Point, Size); 

System.Windows.Shapes.Rectangle(); 
1

変化として以下の名前空間。必要に応じてSystem.Drawing.dllへの参照を追加します。

//using System.Windows.Shapes; 
using System.Drawing; 
関連する問題