Я пытаюсь нарисовать пунктирную линию, используя PHP Imagick. Этот код производит сплошную линию:
$line = new ImagickDraw();
$line->setStrokeWidth(3);
$line->setStrokeDashArray([10, 10]);
$line->line(0, 0, 100, 100);
setStrokeDashArray()
кажется, работает для контуров на ImagickDraw::rectangle()
но нет ImagickDraw::line()
чертежи. Есть ли способ нарисовать простые пунктирные линии?
Чтобы получить красивую пунктирную линию без сплошной линии внутри нее, установите цвет заливки на непрозрачность ноль (фактический выбор цвета не имеет значения, пока значение непрозрачности 0
), а затем не забудьте установить цвет обводки.
Рабочий пример (с добавленной отладкой в дамп браузера):
$line = new ImagickDraw();
$line->setStrokeColor('rgb(0, 0, 0)');
$line->setFillColor('rgba(255, 255, 255, 0)');
$line->setStrokeWidth(3);
$line->setStrokeDashArray([10, 10]);
$line->line(0, 0, 100, 100);
// for debugging, output to browser:
$image = new Imagick();
$image->newImage(200, 200, 'rgb(230, 230, 230)');
$image->setImageFormat("png");
$image->drawImage($line);
header("Content-Type: image/png");
echo $image->getImageBlob();
exit;
Результат отладки:
Других решений пока нет …