2011-09-17 75 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:記住,當你試圖找到這些點時,從數學的角度來看,你正在計算**幾個**三角形 - 只要記住,你只需要通過前四個座標對,多邊形功能將自動爲您繪製最後一條連接線段。 – Dereleased

+0

你是對的,但我也用熟悉的象限創建了一些其他複雜的圖形。我曾經想過使用imagepolygon()但不能使用它。不過謝謝。 :) – Ameer

1

我建議使用內置的imagerotate以及使用imagefilledrectangle創建的矩形。

下面是一個例子,創建一個20X100紅色矩形旋轉30度:

$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

沒有。不能旋轉整個圖像。因爲我也畫了一些其他複雜的shaps ...旋轉它將是:(。 – Ameer