有没有什么简单的方法可以在php中创建一个有角度的矩形



我想知道是否有一种在php中使用GD绘制倾斜矩形的简单方法
我知道我可以使用imagefilledpolygon函数,但考虑到你应该手动计算所有的点,这有点棘手。

我认为imagefilledrectangle的一个改进版本应该是这样的:

imagefilledrectangle($img,$centerX,$centerY,$angle,$color);

其中$centerX$centerY将是矩形中心点的坐标
或者类似的东西。

"倾斜矩形"是什么意思?你是说一个边不垂直于图像x和y方向的矩形?

要使用imagefilledrectangle()函数,必须提供定义矩形范围的两个点的坐标。我想,如果你想画一个旋转了一个角度的矩形,那么你可能想提供

  • 矩形的宽度和高度
  • 矩形的中心(或另一个指定点,如矩形的可分辨顶点)
  • 矩形旋转的角度
除了宽度和高度之外,你提到了每一个。

假设我想做一个函数imagefilledrotatedrectangle($img, $centerX, $centerY, $width, $height, $angle, $color)。我可能会让它计算矩形的4个顶点,然后调用传递这4个点的imagefilledpolygon()。在伪代码中:

(假设我的顶点标记为1、2、3和4,顺时针旋转。我可以将它们表示为整数对,得到整数$x1$y1$x2$y2$x3$y3$x4$y4。)

function imagefilledrotatedrectangle( $img,
                                      $centerX, $centerY,
                                      $width, $height,
                                      $angle,
                                      $color
                                      ) {
    // First calculate $x1 and $y1. You may want to apply
    // round() to the results of the calculations.
    $x1 = (-$width  * cos($angle) / 2) + $centerX;
    $y1 = (-$height * sin($angle) / 2) + $centerY;
    // Then calculate $x2, $y2, $x4 and $y4 using similar formulae. (Not shown)
    // To calculate $x3 and $y3, you can use similar formulae again, *or*
    // if you are using round() to obtain integer points, you should probably
    // calculate the vectors ($x1, $y1) -> ($x2, $y2) and ($x1, $y1) -> ($x3, $y3)
    // and add them both to ($x1, $y1) (so that you do not occasionally obtain
    // a wonky rectangle as a result of rounding error). (Not shown)
    imagefilledpolygon( $img,
                        array($x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4),
                        4,
                        $color
                        );
}

相关内容

  • 没有找到相关文章

最新更新