无需太多细节-我从Web工具获取参数(x1,x2,y1,y2,a,b,α),我需要使用Zend_PDF库生成PDF文档,该库包含旋转的绿色图像和在正确的坐标上正确定位。

pdf - Zend PDF : calculating coordinates after rotation-LMLPHP

现在,令我困惑的是Zend不允许旋转元素,而是旋转纸张。因此,我认为需要像这样进行轮换
$page->rotate($x1 + ($x2 - $x1) / 2, $y1 + ($y2 - $y1) / 2, - deg2rad($rotation));
因为我们希望将图像的中心作为旋转点,并以相反的方向旋转它,所以生成的图像将获得适当的旋转。

我遇到的棘手的部分是绘制它。用简单的电话
$page->drawImage($image, $x1, $y1, $x2, $y2);
我得到的结果如图所示-由于(x1,y1)和(x2,y2)不再是精确的坐标,因此也需要转换结果图像,但是我不确定如何计算它们?有任何想法吗?

最佳答案

OP在评论中确认,他在rotatedrawImage调用中为( x1 y1 )和( X2 y2 )使用了相同的值。从他的草图中可以很明显地看出,后一个调用的坐标必须不同。

幸运的是,我们从将绿色矩形内接到( x1 y1 )到( X2 y2 )的方式得知,矩形与该矩形具有相同的中心点。此外,我们具有绿色矩形的尺寸 a b

因此,drawImage参数必须更改为:

$page->drawImage($image, $x1 + ($x2 - $x1) / 2 - $a / 2
                       , $y1 + ($y2 - $y1) / 2 - $b / 2
                       , $x1 + ($x2 - $x1) / 2 + $a / 2
                       , $y1 + ($y2 - $y1) / 2 + $b / 2);

关于pdf - Zend PDF : calculating coordinates after rotation,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34659800/

10-11 16:41