在 TCPDF 中添加阴影

问题描述 投票:0回答:2

我相信 TCPDF 中没有本地方法来创建阴影。我有什么想法可以用其他方法创造这样的效果吗?我首先考虑在每个边缘(对于矩形)旁边创建一个小渐变,但发现没有办法创建具有不同 alpha 通道的渐变。

tcpdf dropshadow
2个回答
5
投票

类似这样的:

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);
    }
}

0
投票

要获得此结果:

使用 DropShadow 绘制矩形

我用这个:

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

© www.soinside.com 2019 - 2024. All rights reserved.