PHPで角丸長方形を描く
PHPを使って角が丸い長方形、いわゆる角丸長方形を描きたいのですが、どうすればよいでしょうか。
PHPには長方形を描くためのImageRectangleという関数がありますが、角丸長方形を描く関数が見当たりません。
そこで作ってみました。
function ImageRoundedRectangle($image, $x1, $y1, $x2, $y2, $r, $color){
ImageLine($image, $x1 + $r, $y1, $x2 - $r, $y1, $color);
ImageLine($image, $x1 + $r, $y2, $x2 - $r, $y2, $color);
ImageLine($image, $x1, $y1 + $r, $x1, $y2 - $r, $color);
ImageLine($image, $x2, $y1 + $r, $x2, $y2 - $r, $color);
ImageArc($image, $x1 + $r, $y1 + $r, $r * 2, $r * 2, 180, 270, $color);
ImageArc($image, $x2 - $r, $y1 + $r, $r * 2, $r * 2, 270, 360, $color);
ImageArc($image, $x1 + $r, $y2 - $r, $r * 2, $r * 2, 90, 180, $color);
ImageArc($image, $x2 - $r, $y2 - $r, $r * 2, $r * 2, 0, 90, $color);
}
ImageLine($image, $x1 + $r, $y1, $x2 - $r, $y1, $color);
ImageLine($image, $x1 + $r, $y2, $x2 - $r, $y2, $color);
ImageLine($image, $x1, $y1 + $r, $x1, $y2 - $r, $color);
ImageLine($image, $x2, $y1 + $r, $x2, $y2 - $r, $color);
ImageArc($image, $x1 + $r, $y1 + $r, $r * 2, $r * 2, 180, 270, $color);
ImageArc($image, $x2 - $r, $y1 + $r, $r * 2, $r * 2, 270, 360, $color);
ImageArc($image, $x1 + $r, $y2 - $r, $r * 2, $r * 2, 90, 180, $color);
ImageArc($image, $x2 - $r, $y2 - $r, $r * 2, $r * 2, 0, 90, $color);
}
使い方はImageRectangleと同じです。
$x1と$y1は長方形の左上の座標です。$x2と$y2は右上の座標です。
角丸長方形は角を円弧で描くのでその半径を$rとします。
[ 2014年11月1日 | カテゴリー: PHP | タグ: 図形 ]
« 差し込み印刷で郵便番号にハイフンを入れる | CSVからYahoo!スタティックマップを作る »
コメントを残す