ホームページ >php教程 >php手册 >PHP描画の話(2)

PHP描画の話(2)

WBOY
WBOYオリジナル
2016-06-21 09:08:241048ブラウズ

前回はGDを回避するための簡単な描画方法についてお話しましたが、次にGDを使用して最も単純な「描画」である直線を描画しました。
今回は引き続き下に向かって直線を引いていきます。前回のコードで詳しく説明した部分は今回は繰り返しません。

Header("Content-type: image/png");
$im = ImageCreate (200, 100);
$col_black = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
// 今日はオレンジを使用しましょう。
// imageline 関数とまったく同じ使用法、
ImageDashedLine($im,0,100,199,100,$col_orn);
// これにより点線が描画されます。

// 実験をしてみましょう。問題を説明するために使用されます。
$col_yel = ImageColorAllocate($im, 255,255,0);
// 黄色。
ImageLine($im,0,99,199,99,$col_yel);
// 画像の下端に黄色の線を描きます。
ImageLine($im,200,0,200,100,$col_orn);
// 画像の右端にオレンジ色の線を描画しようとしましたが、何も起こりません。
// これは、幅200、高さ100の画像の座標範囲が(0,0)から(199,99)であることを示しています。

ImagePNG($im);
ImageDestroy($im);
// まずこのセクションを終了しましょう。
?>


次の効果は絶大です!私も今勉強して販売中です。 PHP 4.0.6 以降では、この使用法が追加されました - 代替
色で線を描くことができます。例は次のとおりです:


Header("Content-type: image/png");
$im = ImageCreate (200, 100);
$col_black = ImageColorAllocate($im, 0,0,0) ;
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_red = ImageColorAllocate($im, 255,0,0);

$style=array($col_red,$col_red,$col_black,$col_orn, $col_orn ,$col_orn,$col_black);
ImageSetStyle($im, $style);
ImageLine($im, 0, 50, 199, 50, IMG_COLOR_STYLED);

ImagePNG($im);
ImageDestroy($im) );
?>

効果を見てみましょう。

このうち、空行で区切られた3行について説明します。配列 $style が定義され、そのメンバーは一連の色です。
次に、関数が実行され、IMG_COLOR_STYLED の「色」を使用して、そのような魔法の「直線」が描画されます -
赤、黒、そしてオレンジ色。注意深く見ると、赤、黒、オレンジの交互の順序が、定義した
$style 配列のメンバーの順序であることがわかります: 赤、赤、黒、オレンジ、オレンジ、オレンジ、黒、そしてまたサイクルが始まります...
はっきりわかります まだ?この関数は PHP 4.0.6 以降でのみサポートされることに注意してください。



ここまで詳しく解説した線画の基本を踏まえて、他の幾何学図形を一気に描くための関数を書いていきたいと思います。皆さんに思い出していただきたいのは、どんな幾何学図形を描いても、それはその図形のいくつかの要素を把握することに他ならないということです。最初に色を数えないと、さまざまなグラフィックスの要素は次のとおりです:

point、2 つの要素: 横座標と縦座標

rectangle、4 つの要素: 左上隅と右下隅の横座標と縦座標

arc、これを理解してください方法: 円弧には円弧と楕円弧が含まれます。円弧を描いて 360 度描いて円を形成します。楕円弧を描いて 360 度描いて楕円を形成します。この円弧の要素は 6 つです。 point は水平座標と垂直座標、水平軸の長さ、垂直軸の長さ、円弧の始点と終点です。

以下の例を見てください。

Header("Content-type: image/png");
$im = ImageCreate (200, 100);
$col_blk = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0) ,0,255);

ImageSetPixel($im,20,10,$col_orn);
// 小さな点、見えるかな?
ImageRectangle($im,25,20,95,55,$col_blu);
// 青い四角形。
ImageArc($im,20,85,50,40,225,360,$col_grn);
// (20,85) を中心とする緑色の楕円弧、水平軸 50、垂直軸 40、225 度から 360 度。
// ここでの円弧の始点と終点は角度で測定されていることがわかります。
// は水平右方向を 0 度として時計回りに計算されます。
ImageArc($im,160,60,40,40,0,360,$col_orn);
// オレンジ色の完全な円。横軸の長さと縦軸の長さが等しい限り、それは真円です。
// 私たちは皆高校で学びました: 円は楕円の特殊な場合です!
//最後に別の円弧を描きます。円の中心が画像の外側にあってもよいでしょうか?
ImageArc($im,160,140,​​240,240,0,360,$col_red);
// はい!

ImagePNG($im);
ImageDestroy($im);
?>

もちろん、描画する際に特定の領域を特定の色で塗りつぶすことは避けられません。 GD には 3 つの着色方法があり、1 つは長方形領域を着色する
1 つは指定した点が位置する囲まれた領域を着色する
1 つは指定した色で囲まれた領域を着色する
です。次の例を見てください:
Header("Content-type: image/png");
$im = ImageCreate (200, 100);
$col_blk = ImageColorAllocate($im, 0,0,0) ;
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_yel = ImageColorAllocate($im, 255,255,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate ( $im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);

ImageFilledRectangle($im,20,10,100,50,$col_blu);
ImageFilledRectangle($im,5,40, 50 ,90,$col_red);
ImageFilledRectangle($im,40,80,100,95,$col_orn);
ImageFilledRectangle($im,90,35,110,90,$col_yel);
// 上記は最初の色付けです。長方形を直接描きます。
// 2 番目の色付けを説明するために、意図的に小さな領域を異なる色の 4 つの長方形で囲みました。
//

ImagePNG($im);
ImageDestroy($im);

// エフェクトを見てみましょう。

?>

次に:

Header("Content-type: image/png");
$im = ImageCreate (200, 100);
$col_blk = ImageColorAllocate($im, 0, 0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_yel = ImageColorAllocate($im, 255,255,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);

ImageFilledRectangle($im,20,10,100,50,$col_blu);
ImageFilledRectangle($im, 5,40,50,90,$col_red);
ImageFilledRectangle($im,40,80,100,95,$col_orn);
ImageFilledRectangle($im,90,35,110,90,$col_yel);
// 上記は初めてのAカラーリング。長方形を直接描きます。
// 2 番目の色付けを説明するために、意図的に小さな領域を異なる色の 4 つの長方形で囲みました。
//

ImageFill($im,70,70,$col_grn);
// これは 2 番目の色付けです。

ImageRectangle($im,120,40,190,90,$col_grn);
// フレームを作成するための長方形を描画しましょう。実際、あらゆる形状の境界線をフレームとして使用できます。
ImageFilltoBorder($im,130,50,$col_grn,$col_orn);
// 緑色の長方形の枠をオレンジ色に塗ります。
// 指定された点がこの「ボックス」の範囲内にある限り、領域内の点の位置とは関係ありません。
// この関数は実際には次のように動作します。
// 指定された点から開始して、指定された色の境界が見つかったら停止します。
// 見つからなかった場合は、必要な色で通過点をペイントします。

ImagePNG($im);
ImageDestroy($im);

// エフェクトを見てみましょう。
// 作成した画像はカラフルですが、ブラウザの画像上では、
// 右クリック -> プロパティ: わずか 214 バイト!

?>

今回はここまでにしましょう。



🎜🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。