현재 위치: > 최신 기사 목록> ImageOpenPolygon () 대신 ImageFilledPolygon ()을 사용하는 방법을 구현하여 다각형을 채우십시오.

ImageOpenPolygon () 대신 ImageFilledPolygon ()을 사용하는 방법을 구현하여 다각형을 채우십시오.

M66 2025-05-29

PHP의 GD 라이브러리를 사용하여 그래프를 그릴 때 개발자는 때때로 이미지에 다각형을 그릴 필요가 있습니다. 전통적으로 ImageOpenPolygon () 함수는 중공 다각형 개요를 그릴 수 있습니다. 그러나 때때로 우리는 특히 색상 충전 및 개요 스타일을 처리해야 할 때보다 유연한 드로잉 효과를 달성하기 위해 ImageFilledPolygon ()을 사용하기를 원합니다. 이 기사는 ImageOpenPolygon () 대신 ImageFilledPolygon ()을 사용하는 방법을 소개하고 중공 다각형을 그리는 문제를 해결하는 방법을 소개합니다.

ImageOpenPolygon () 대신 ImageFilledPolygon ()을 사용하는 이유

ImageOpenPolygon () 은 주로 중공 다각형을 그리는 데 사용되며 그 효과는 뇌졸중이며 내부 충전물이 아닙니다. ImageFilledPolygon ()은 채워진 다각형을 직접 그릴 수 있습니다.

특정 테두리 색상 또는 더 복잡한 컨트롤로 다각형을 그려 보려면 ImageFilledPolygon () 이 더 유연합니다. 특히 ImageOpenPolygon ()가 더 다양한 드로잉 요구 사항을 지원하지 않는 경우 ImageFilledPolygon ()을 사용하여 윤곽 도면을 직접 시뮬레이션하는 것이 좋은 대안이됩니다.

사용 방법

기본 아이디어는 다음과 같습니다.

  1. ImageFilledPolygon ()을 사용하여 채워진 다각형을 그립니다 (배경 또는 투명한 색상으로 채우십시오).

  2. Imageline ()을 사용하여 다각형의 경계를 개별적으로 그립니다.

이를 통해 필기가 필요한 중공 다각형 효과를 달성하기 위해 채우기 색상 및 테두리 색상을 수동으로 제어 할 수 있습니다.

샘플 코드

아래는 ImageOpenPolygon ()과 유사한 효과를 달성하기 위해 ImageFilledPolygon ()을 사용하는 방법을 보여주는 완전한 예입니다.

 <?php
// 캔버스를 만듭니다
$image = imagecreatetruecolor(300, 300);

// 색상을 할당합니다
$white = imagecolorallocate($image, 255, 255, 255);
$borderColor = imagecolorallocate($image, 0, 0, 0);

// 배경을 채우십시오
imagefill($image, 0, 0, $white);

// 다각형의 점을 정의하십시오
$points = [
    50, 50,
    250, 70,
    200, 200,
    100, 250,
    60, 150
];

// 다각형을 채우십시오(배경색을 사용하십시오,내부를 투명하거나 같은 색상으로 유지하십시오)
imagefilledpolygon($image, $points, count($points) / 2, $white);

// 다각형 테두리를 그립니다
$num_points = count($points) / 2;
for ($i = 0; $i < $num_points; $i++) {
    $x1 = $points[$i * 2];
    $y1 = $points[$i * 2 + 1];
    $x2 = $points[(($i + 1) % $num_points) * 2];
    $y2 = $points[(($i + 1) % $num_points) * 2 + 1];
    imageline($image, $x1, $y1, $x2, $y2, $borderColor);
}

// 출력 이미지
header('Content-Type: image/png');
imagepng($image);

// 자원을 자유롭게합니다
imagedestroy($image);
?>

코드 설명

  • ImageFilledPolygon ()은 내부 영역이 변색되는 것을 방지하기 위해 배경색으로 채워집니다.

  • 루프 Imageline ()을 사용하여 각 정점을 수동으로 연결하여 다각형의 외부 경계를 그립니다.

  • ($ i + 1) % $ $ num_points는 마지막 지점이 첫 번째 지점에 연결 될 수 있도록합니다.

주목해야 할 것

  • 내부 투명성을 원한다면 캔버스를 작성한 후 ImagesAvealpha ()ImageColorallocatealpha ()를 사용하여 투명한 배경을 설정할 수 있습니다.

  • 배경이 단색이 아닌 경우 ImageFilledPolygon () 의 채우기 색상을 적절하게 조정하거나 직접 채우지 않고 ImageLine () 에 의해서만 개요를 그릴 수 있습니다.

확장 : 실제 프로젝트의 응용 프로그램