Нарисуйте прямоугольник с PHP под углом - PullRequest
1 голос
/ 17 сентября 2011

Я хотел бы нарисовать прямоугольник под углом с помощью PHP. Я знаю, что вы можете рисовать прямоугольники с помощью PHP, используя imagefilledrectangle, но как нарисовать его под углом.

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

Ответы [ 2 ]

6 голосов
/ 18 сентября 2011

Используйте imagepolygon() или imagefilledpolygon() для рисования непрямоугольных фигур с помощью GD. Возможно, вам придется пересмотреть немного тригонометрии, чтобы понять, как расположить точки, чтобы получить прямые углы.

1 голос
/ 18 сентября 2011

Я бы предложил использовать встроенное 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);
...