ImagickDraw::arc

(PECL imagick 2, PECL imagick 3)

ImagickDraw::arc绘制弧线

描述

public ImagickDraw::arc(
    float $sx,
    float $sy,
    float $ex,
    float $ey,
    float $sd,
    float $ed
): bool
警告

此函数目前没有文档;只有其参数列表可用。

在图像上绘制一个位于指定边界矩形内的弧线。

参数

sx

边界矩形的起始 x 坐标

sy

边界矩形的起始 y 坐标

ex

边界矩形的结束 x 坐标

ey

边界矩形的结束 y 坐标

sd

起始旋转角度

ed

结束旋转角度

返回值

没有返回值。

示例

示例 #1 ImagickDraw::arc() 示例

<?php
function arc($strokeColor, $fillColor, $backgroundColor, $startX, $startY, $endX, $endY, $startAngle, $endAngle) {

// 创建一个 ImagickDraw 对象用于绘制。
$draw = new \ImagickDraw();
$draw->setStrokeWidth(1);
$draw->setStrokeColor($strokeColor);
$draw->setFillColor($fillColor);
$draw->setStrokeWidth(2);

$draw->arc($startX, $startY, $endX, $endY, $startAngle, $endAngle);

// 创建一个图像对象,绘制命令可以渲染到其中。
$image = new \Imagick();
$image->newImage(IMAGE_WIDTH, IMAGE_HEIGHT, $backgroundColor);
$image->setImageFormat("png");

// 将 ImagickDraw 对象中的绘制命令渲染到图像中。
$image->drawImage($draw);

// 将图像发送到浏览器。
header("Content-Type: image/png");
echo
$image->getImageBlob();
}

?>

添加笔记

用户贡献的笔记 1 笔记

1
skmanji at manji dot org
13 年前
您可以通过结合使用弧线和多边形函数来制作饼图(实际上应该有一个内置命令来执行此操作)。

<?php
// 创建一个新的画布对象和一个白色图像
$canvas = new Imagick();
$canvas->newImage(600, 600, 'grey');

image_pie($canvas, 300, 300, 200, 0, 45, 'red');
image_pie($canvas, 300, 300, 200, 45, 125, 'green');
image_pie($canvas, 300, 300, 200, 125, 225, 'blue');
image_pie($canvas, 300, 300, 200, 225, 300, 'cyan');
image_pie($canvas, 300, 300, 200, 300, 360, 'orange');

// 输出图像
$canvas->setImageFormat('png');
header("Content-Type: image/png");
echo
$canvas;
exit;

// 函数

function image_arc( &$canvas, $sx, $sy, $ex, $ey, $sd, $ed, $color = 'black' ) {

// 在画布上绘制弧线
// $sx, $sy, $ex, $ey 指定一个圆形的边界矩形,圆心位于矩形中心
// $sd 和 $ed 指定起始和结束角度(以度为单位)

$draw = new ImagickDraw();
$draw->setFillColor($color);
$draw->setStrokeColor($color);
$draw->setStrokeWidth(1);
$draw->arc($sx, $sy, $ex, $ey, $sd, $ed);
$canvas->drawImage($draw);
}

function
image_pie( &$canvas, $ox, $oy, $radius, $sd, $ed, $color = 'black' ) {

// 绘制饼形图段
// $ox, $oy 指定圆心
// $sd 和 $ed 指定起始和结束角度(以度为单位)
// 角度从 0 = 东开始,顺时针方向递增

// 位置 1 - 将角度转换为弧度并获取圆周上的第一个点
$x1 = $radius * cos($sd / 180 * 3.1416);
$y1 = $radius * sin($sd / 180 * 3.1416);

// 位置 2 - 将角度转换为弧度并获取圆周上的第二个点
$x2 = $radius * cos($ed / 180 * 3.1416);
$y2 = $radius * sin($ed / 180 * 3.1416);

// 绘制图段三角形 - 指定三个点并绘制一个多边形
$points = array(array('x' => $ox, 'y' => $oy), array('x' => $ox + $x1, 'y' => $oy + $y1), array('x' => $ox + $x2, 'y' => $oy + $y2));

image_polygon($canvas, $points, $color);

// 绘制相应的弧线来完成 "饼形图" 图段
image_arc($canvas, $ox - $radius, $oy - $radius, $ox + $radius, $oy + $radius, $sd, $ed, $color);
}

function
image_polygon( &$canvas, $points, $color = 'black' ) {

// 在画布上绘制一个多边形

$draw = new ImagickDraw();
$draw->setFillColor($color);
$draw->setStrokeColor($color);
$draw->setStrokeWidth(1);
$draw->polygon($points);
$canvas->drawImage($draw);
}

?>
To Top