2012-02-17 20 views
0

四角形の作成方法は?私はコーナーでサイズ変更可能な四角形を作成しています。ココアで四角形を作る方法は?リサイズ可能な矩形の場合

私はこのような二つの点でそれを行うことができます。それは私が1(左下)または3(右上)のコーナーを移動した場合の良い作業が、2(左上)または4(場合だ

NSMakeRect(MIN(point1.x, point3.x), 
         MIN(point1.y, point3.y), 
         fabs(point1.x - point3.x), 
         fabs(point1.y - point3.y)); 

右下) - そうではありません。 4つのNSポイントでコーナーを作るには?

+0

長方形または多角形を作成しますか? – Tharabas

+0

@ Tharabas私は長方形を作成したいと思います。 –

答えて

1

以前の答えはあなたの長方形生産しているが、あなたは、彼らはあなたがやりたいことはありませんと言うではなく、なぜ、彼らはそう...間違っています

私はあなたが四角形を持っていて、グラフィックプログラムでクリックドラッグしたときのようにその角を移動したいと思っています。さらに、長方形の辺が軸に平行であることをサンプルコードに基づいて想定しています。

このシナリオでは、あなたが動かすものの斜めに反対側の点がアンカーです。それはそのままです。移動するものは明らかに移動し、他の2つは移動して形状を長方形に保ちます。

この場合、移動する点と斜めに反対側の点のみに基づいて矩形を計算します。 point1またはpoint3が動かされた場合、あなたの質問で与えたコードは大文字小文字を処理します。あなたはちょうどあなたが簡単な置換によって取得され、ケースのポイント2またはPOINT4のコードが移動される必要があります。

NSMakeRect(MIN(point2.x, point4.x), 
        MIN(point2.y, point4.y), 
        fabs(point2.x - point4.x), 
        fabs(point2.y - point4.y)); 

あなたは今ちょうどあなたが移動し、適切なコードを選択指すかを知る必要があります。

+0

ありがとう、それは私が必要とするものです! –

0

私はこれが構文的に正しいことが保証されていないのObjective-Cを書いていない、そしてそれは長方形を定義する4点に依存しない、ではないいくつかの他の平面図:

NSMakeRect(MIN(point1.x, MIN(point2.x, MIN(point3.x, point4.x)))), 
      MIN(point1.y, MIN(point2.y, MIN(point3.y, point4.y)))), 
      MAX(point1.x, MAX(point2.x, MAX(point3.x, point4.x)))), 
      MAX(point1.y, MAX(point2.y, MAX(point3.y, point4.y))))) 

私は期待して私角かっこはいずれにも一致しません。

+0

ご協力いただきありがとうございますが、これは機能しませんでした。 –

+0

さて、私は自分自身で答えを投票しようとしましたが、明らかにそうではありません。 –

1

あなたの与えられたNSPointsの全てを含んで矩形を構築しないように - どんなに多くの - あなたは最小最大値を見つける必要があるだろう。

// start by initializing their opposite MIN/MAX values 
CGFloat xmin = CGFLOAT_MAX, xmax = CGFLOAT_MIN, 
     ymin = CGFLOAT_MAX, ymax = CGFLOAT_MIN; 
NSUInteger pointCount = ? // you'd have to add this 
NSPoint points[pointCount] = { ... } // suppose you know your values :D 

for (NSUInteger i = 0; i < pointCount; i++) { 
    xmin = MIN(xmin, points[i].x); 
    xmax = MAX(xmax, points[i].x); 
    ymin = MIN(ymin, points[i].y); 
    ymax = MAX(ymax, points[i].y); 
} 

// now create a rect from those points 
NSRect rect = NSMakeRect(xmin, ymin, xmax - xmin, ymax - ymin); 
+0

ええええええええええええええええええええええええええと、申し訳ありませんが、私が必要なものを正しく理解するにはあまりにも少ないと言われました。あなたの例では、矩形を最大点で描画します。私はx、yを描く必要があります。私はサイズ変更可能な矩形を作成しているので、サイズを変更すると別の点にとどまります。助けてくれてありがとう、でもこれを解決する方法は分かっていますか?私は私の質問を更新しました。 –

0

あなたの主な問題はポイントだと思います。あなたはこのように描くことができます4点から

長方形:

NSMakeRect(MIN(MIN(points[0].x, points[2].x), MIN(points[1].x, points[3].x)), 
      MIN(MIN(points[0].y, points[2].y), MIN(points[1].y, points[3].y)), 
      MAX(fabs((points[0].x - points[2].x)),fabs(points[1].x - points[3].x)), 
      MAX(fabs((points[0].y - points[2].y)), fabs((points[1].y - points[3].y)))); 
関連する問題