无需太多细节-我从Web工具获取参数(x1,x2,y1,y2,a,b,α),我需要使用Zend_PDF库生成PDF文档,该库包含旋转的绿色图像和在正确的坐标上正确定位。
现在,令我困惑的是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在评论中确认,他在rotate
和drawImage
调用中为( 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/