рисование — Как я могу нарисовать пунктирную линию в PHP ImageMagick?

Я пытаюсь нарисовать пунктирную линию, используя PHP Imagick. Этот код производит сплошную линию:

$line = new ImagickDraw();
$line->setStrokeWidth(3);
$line->setStrokeDashArray([10, 10]);
$line->line(0, 0, 100, 100);

setStrokeDashArray() кажется, работает для контуров на ImagickDraw::rectangle() но нет ImagickDraw::line() чертежи. Есть ли способ нарисовать простые пунктирные линии?

2

Решение

Чтобы получить красивую пунктирную линию без сплошной линии внутри нее, установите цвет заливки на непрозрачность ноль (фактический выбор цвета не имеет значения, пока значение непрозрачности 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;

Результат отладки:

Пример вывода отладки

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]