2011-09-17 21 views
1

PHPで斜めに四角形を描きたい。 imagefilledrectangleを使用してPHPで長方形を描くことができますが、角度を描く方法はわかります。PHPで角度をつけて矩形を描画する

public function drawshelf($x1, $y1, $x2, $y2, $width, $angle = 'false'){ 
    imagesetthickness ($this->canvas, 1); 
    for ($i=0; $i < $width; $i++){ //HORIZONTAL 
     imageline($this->canvas, $x1, $y1, $x2, $y2, $this->color); 
     $y1++; $y2++; 
     if($angle == 'true'){ $x1--; $x2--; } 
    } 
} 

この関数は、線とループを使用して描画するが、赤いボックスのようには表示されません。

誰かが間違っていることを教えてもらえますか?そしてそれをそれのように描くことさえできますか?

enter image description here

答えて

6

使用imagepolygon()またはimagefilledpolygon()はGDを使用して非矩形形状を描きます。三角測量を少し見直して、ポイントをどのように配置して直角コーナーを得るかを理解する必要があるかもしれません。

+1

+1を、そしてあなたは、私がしようとしてきたので、あなたが」言うことができるので、イライラしている、なぜ人々が尋ねるとき、最良の部分があります5時間の四角形を描画する "。私にとっては三角形でした。特定のパラメータに基づいて、任意の角度に回転する三角形を描画しなければならず、幅、高さ、開始点が可変であった。ああ、透明でなければならなかったので、私のためのデフォルトローテーションはありません。 – Dereleased

+0

ああ、OPに:ちょっと覚えておいてください。これらの点を見つけようとするとき、数学的な観点から、いくつかの**三角形を計算しようとしています。ちょうど最初の4つポリゴン関数は自動的に最後の接続線分を描画します。 – Dereleased

+0

あなたは正しいですが、馴染みのある四分円でいくつかの他の複雑なグラフィックも作成しています。私はimagepolygon()を使って考えましたが、使用することはできません。とにかくありがとう。 :) – Ameer

1

imagerotateに組み込まれているものと、imagefilledrectangleで作成した四角形を使用することをおすすめします。

ここでは30度回転し20x100赤い長方形を作成し、例を示します

$width = 20; 
$height = 100; 
$angle = 30; 
$im = imagecreatetruecolor($width, $height); 
$white = imagecolorallocate($im, 255, 255, 255); 
$red = imagecolorallocate($im, 255, 0, 0); 

// Draw a red rectangle 
imagefilledrectangle($im, 0, 0, $width, $height, $red); 
// Rotate and fill out background with white 
$im = imagerotate($im, $angle, $white); 
+0

いいえ。完全な画像を回転させることはできません。なぜなら、私は他の複雑な形を描いているからです。 – Ameer