지난번에는 GD를 피하는 간단한 그리기 방법에 대해 이야기한 다음 GD를 사용하여 가장 간단한 "그림"인 직선을 그렸습니다.
이번에는 계속해서 아래쪽으로 직선을 그립니다. 지난 코드에서 자세히 설명했던 부분은 이번에는 반복하지 않겠습니다.
<?
Header("콘텐츠 유형: 이미지/png");
$im = 이미지 생성(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)임을 나타냅니다.
이미지PNG($im);
ImageDestroy($im);
// 먼저 이 섹션을 끝내겠습니다.
?>
다음 효과는 좋을 것입니다! 저도 지금 배워서 판매하고 있어요. PHP 4.0.6 이상에서는 이 사용법이 추가되었습니다 - 대체 색상으로 선을 그릴 수 있습니다! 예는 다음과 같습니다.
<?
Header("콘텐츠 유형: 이미지/png");
$im = 이미지 생성(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);
?>
효과를 보세요.
제가 빈 줄로 구분한 세 줄을 설명해 주세요. $style 배열이 정의되어 있으며 그 구성원은 일련의 색상입니다.
그런 다음 함수가 실행되고 IMG_COLOR_STYLED "색상"을 사용하여 이러한 마법의 "직선"을 그렸습니다.
빨간색, 검정색, 주황색 교대 효과. 주의 깊게 살펴보면 빨간색, 검은색, 주황색이 번갈아 나타나는 순서가 우리가 정의하는 것임을 알 수 있습니다.
$style 배열 멤버의 순서: 빨간색, 빨간색, 검은색, 주황색, 주황색, 주황색, 검은색, 그런 다음 주기가 다시 시작됩니다.
이해했나요? 이 기능은 PHP 4.0.6 이후에만 지원됩니다.
제가 자세히 설명한 선 그리기의 기본을 바탕으로 다른 기하학적 도형을 그리는 기능도 한번에 작성하고 싶습니다. 제가 여러분께 상기시켜 드리고 싶은 것은 어떤 기하학적 도형을 그리더라도 그것은 그 도형의 몇 가지 요소를 파악하는 것에 불과하다는 것입니다. 색상을 먼저 계산하지 않고 다양한 그래픽의 요소는 다음과 같습니다.
점, 두 요소: 가로좌표 및 세로좌표
직사각형, 네 가지 요소:
왼쪽 상단 모서리와 오른쪽 하단 모서리의 가로좌표 및 세로호 이렇게 이해하세요. 호에는 호가 포함될 수 있습니다. 타원형 호; 호를 그리고 360도를 그려 원을 형성합니다. 타원형 호를 그리고 360도를 그려 원을 만듭니다.
따라서 이 호에는 중심점의 수평 및 수직 좌표, 수평 축의 길이, 수직 축의 길이, 호의 시작 및 끝 지점 등 6개의 요소가 있습니다.
다음 예를 살펴보세요.
<?
Header("콘텐츠 유형: 이미지/png");
$im = 이미지 생성(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);
// 할 수 있다!
이미지PNG($im);
ImageDestroy($im);
?>
물론 그림을 그릴 때 특정 영역을 특정 색상으로 칠하는 것은 불가피합니다. GD에는 3가지 채색 방법이 있는데, 하나는 직사각형 영역 채색,
하나는 지정된 점이 위치한 닫힌 영역을 색칠하는 것이고, 다른 하나는 지정된 색상으로 둘러싸인 영역을 색칠하는 것입니다. 다음 예를 살펴보십시오.
<?
Header("콘텐츠 유형: 이미지/png");
$im = 이미지 생성(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);
//위가 1차 채색입니다. 직사각형을 직접 그립니다.
// 의도적으로 서로 다른 색상의 직사각형 4개로 작은 영역을 둘러쌌습니다.
// 두 번째 색칠을 설명하는 데 사용됩니다.
이미지PNG($im);
ImageDestroy($im);
// 효과를 살펴보세요.
?>
그런 다음:
<?
Header("콘텐츠 유형: 이미지/png");
$im = 이미지 생성(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);
//위가 1차 채색입니다. 직사각형을 직접 그립니다.
// 의도적으로 서로 다른 색상의 직사각형 4개로 작은 영역을 둘러쌌습니다.
> // 두 번째 채색을 설명하는 데 사용됩니다.
ImageFill($im,70,70,$col_grn);
// 두 번째 채색입니다.
ImageRectangle($im,120,40,190,90,$col_grn);
// 사각형을 그려서 프레임을 만들어 보겠습니다. 실제로 어떤 모양의 테두리라도 프레임으로 사용할 수 있습니다.
ImageFilltoBorder($im,130,50,$col_grn,$col_orn);
// 녹색 직사각형을 주황색으로 칠합니다.
// 지정된 지점이 이 "상자"의 범위 내에 있는 한 해당 영역의 지점 위치와는 아무 관련이 없습니다.
// 이 함수는 실제로 다음과 같이 작동합니다.
//지정된 지점에서 시작하여 바깥쪽으로 지정된 색상의 경계를 찾습니다.
// 못찾으면 통과점을 원하는 색상으로 칠해줍니다.
이미지PNG($im);
ImageDestroy($im);
// 효과를 살펴보세요.
// 이제 우리가 만든 그림은 알록달록한데, 브라우저에서는 그림에,
// 마우스 오른쪽 버튼 클릭->속성: 214바이트만!
?>
이번에는 여기서 멈추자.