Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP imagefilledarc() 함수로 부분 호를 그리고 채우는 방법


imagefilledarc() 함수는 PHP의 내장 함수로, 부분 호(partial arc)를 그린 뒤 지정한 스타일대로 채우는 기능을 제공합니다. 특히 원형 차트(파이 차트)를 만들 때 유용하게 활용됩니다.

문법

bool imagefilledarc($image, $cx, $cy, $width, $height, $start, $end, $color, $style)

매개변수

imagefilledarc() 함수는 $image, $cx, $cy, $width, $height, $start, $end, $color, $style 총 아홉 개의 매개변수를 받습니다.

  • $image − imagecreatetruecolor()와 같은 이미지 생성 함수가 반환하는 이미지 리소스입니다. 이 함수로 이미지의 크기를 생성합니다.

  • $cx − 호의 중심 x 좌표를 설정합니다.

  • $cy − 호의 중심 y 좌표를 설정합니다.

  • $width − 호의 너비를 설정합니다.

  • $height − 호의 높이를 설정합니다.

  • $start − 호의 시작 각도를 도(degree) 단위로 지정합니다.

  • $end − 호의 끝 각도를 도 단위로 지정합니다. 0°는 3시 방향에 위치하며, 호는 시계 방향으로 그려집니다.

  • $color − imagecolorallocate() 함수로 생성한 색상 식별자입니다.

  • $style − 이미지를 어떻게 채울지 지정하며, 다음 값 중 하나를 사용할 수 있습니다.

    • IMG_ARC_PIE

    • IMG_ARC_CHORD

    • IMG_ARC_NOFILL

    • IMG_ARC_EDGED

스타일 옵션 자세히 살펴보기

IMG_ARC_PIEIMG_ARC_CHORD는 서로 배타적인 관계이므로 두 옵션을 동시에 사용할 수 없습니다.

IMG_ARC_CHORD는 시작 각도와 끝 각도를 직선으로 연결하는 반면, IMG_ARC_PIE는 둥근 곡선 형태의 가장자리를 만듭니다.

IMG_ARC_NOFILL은 호나 현(chord)을 채우지 않고 윤곽선만 그리도록 지정합니다.

IMG_ARC_EDGEDIMG_ARC_NOFILL과 함께 사용되며, 시작 각도와 끝 각도를 중심점과 연결하도록 지정합니다.

반환값

성공하면 True를, 실패하면 False를 반환합니다.

예제 1

<?php
   define("WIDTH", 700);
   define("HEIGHT", 550);

   // 이미지 생성
   $image = imagecreate(WIDTH, HEIGHT);

   // 색상 할당
   $bg = $white = imagecolorallocate($image, 0x00, 0x00, 0x80);
   $gray = imagecolorallocate($image, 122, 122, 122);

   // 파이 호 그리기
   $center_x = (int)WIDTH/2;
   $center_y = (int)HEIGHT/2;
   imagerectangle($image, 0, 0, WIDTH-2, HEIGHT-2, $gray);
   imagefilledarc($image, $center_x, $center_y, WIDTH/2,
   HEIGHT/2, 0, 220, $gray, IMG_ARC_PIE);

   // 이미지 출력
   header("Content-Type: image/gif");
   imagepng($image);
?>

실행 결과

PHP imagefilledarc() 함수로 부분 호를 그리고 채우는 방법

예제 2

<?php
   // imagecreatetruecolor 함수로 이미지 생성
   $image = imagecreatetruecolor(700, 300);
   
   // darkgray와 darkred 색상 할당
   $darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);
   $darkred = imagecolorallocate($image, 0x90, 0x00, 0x00);

   // 3D 효과 만들기
   for ($i = 60; $i > 50; $i--) {
      imagefilledarc($image, 100, $i, 200, 100, 75, 360, $darkred, IMG_ARC_PIE);
   }
   imagefilledarc($image, 100, $i, 200, 100, 45, 75 , $darkgray, IMG_ARC_PIE);

   // 이미지 출력
   header('Content-type: image/gif');
   imagepng($image);
   imagedestroy($image);
?>

실행 결과

PHP imagefilledarc() 함수로 부분 호를 그리고 채우는 방법