我相信 TCPDF 中没有本地方法来创建阴影。我有什么想法可以用其他方法创造这样的效果吗?我首先考虑在每个边缘(对于矩形)旁边创建一个小渐变,但发现没有办法创建具有不同 alpha 通道的渐变。
类似这样的:
class MYPDF extends TCPDF {
public function addShadow($x,$y,$h,$w){
for($i=5;$i>=1;$i-=0.5){
$this->SetAlpha(0.1-($i*0.02));
$this->SetFillColor(0, 0, 0);
$this->SetDrawColor(0, 0, 0);
$this->Rect($x+$i, $y+$i, $h, $w, 'DF');
}
$this->SetAlpha(1);
}
}
要获得此结果:
我用这个:
class MYPDF extends TCPDF {
public function DropShadow($x, $y, $w, $h, int $loop = 30, int $step = 2): void
{
for ($i = 0; $i < $loop; $i++) {
$move = $i / $step;
$this->SetAlpha(0.01 + (0.01 * $i));
$this->SetFillColor(0, 0, 0);
$this->SetDrawColor(0, 0, 0);
$this->RoundedRect($x + $move, $y + $move, $w - $move * 2, $h - $move * 2, 4, '1111', 'DF');
}
$this->SetAlpha(1);
}
}
$pdf = new MYPDF();
$pdf->AddPage();
// DropShadow 6mm larger than Rect
$pdf->DropShadow(10, 10, 56, 36);
$pdf->Rect(13, 13, 50, 30, 'F', [], [255, 255, 255]);
$pdf->Output(__DIR__ . '/drop-shadow.pdf', 'F');
测试使用:tecnickcom/tcpdf 6.7.5