gdiplus 예제

gdiplus 예제

또한 다음 예제와 같이 그라데이션 브러시를 만들 수 있습니다. 이러한 각 메서드에 대해 필요한 버퍼의 크기를 제공하는 companion 메서드가 있습니다. 예를 들어 GraphicsPath::GetPathPoints 메서드는 포인트 개체의 배열을 반환합니다. GraphicsPath::GetPathPoints를 호출하기 전에 해당 배열을 보유할 수 있을 만큼 큰 버퍼를 할당해야 합니다. GraphicsPath 개체의 GraphicsPath::GetPointCount 메서드를 호출하여 필요한 버퍼의 크기를 확인할 수 있습니다. GDI+에는 약간의 불신이 있습니다. 첫 번째 단점은? 그것의 느린. 좋아, 너무 느리지 않지만 큰 이미지를 렌더링 할 때 수행 문제가 있습니다. 이 애니메이션 예제에서는 빈 이미지를 만드는 백버퍼 전략을 사용하여 그림을 그리는 다음 그리기가 완료되면 해당 이미지를 창의 DC에서 만든 기본 그래픽 오브젝트에 그립니다.

이렇게 하면 불쾌한 깜박임이 제거되지만 창 크기가 증가함에 따라 속도가 상당히 느려집니다. 다음 예제에서는 GraphicsPath 개체의 포인트 수를 확인하고, 많은 점을 보유할 수 있을 만큼 큰 버퍼를 할당한 다음 GraphicsPath:GetPathPoints를 호출하여 버퍼를 채우는 방법을 보여 주며, 이렇게 합니다. 코드가 GraphicsPath::GetPathPoints를 호출하기 전에 버퍼 포인터가 NULL이 아닌지 확인하여 버퍼 할당이 성공했는지 확인합니다. 이전 예제에서는 새 연산자가 버퍼를 할당하는 데 사용합니다. 버퍼가 알려진 수의 Point 개체로 채워졌기 때문에 새 연산자가 편리했습니다. 경우에 따라 GDI+는 GDI+ 개체의 배열보다 버퍼에 더 많이 씁니다. 버퍼는 해당 개체의 멤버가 가리키는 추가 데이터와 함께 GDI+ 개체의 배열로 채워질 수 있습니다. 예를 들어 Image:GetAllPropertyItems 메서드는 이미지에 저장된 각 속성 항목(메타데이터 조각)에 대해 하나씩 PropertyItem 개체의 배열을 반환합니다. 그러나 이미지::GetAllPropertyItems는 PropertyItem 개체의 배열 이상을 반환합니다. 추가 데이터로 배열을 추가합니다.

선을 그릴 때는 여러 가지 근본적인 사항을 고려해야 합니다. 예를 들어 그릴 선의 종류를 선택해야 합니다. 직선 또는 곡선을 원하십니까? 단순 한 줄을 원하십니까, 아니면 여러 세그먼트로 구성된 복잡한 선을 그리시겠습니까? 원, 사각형 또는 다각형과 같이 시작점과 끝점과 동일한 완전히 밀폐된 영역을 형성하는 닫힌 모양을 그릴 수 있습니까? 선의 원하는 모양에 따라 다른 방법을 사용하여 이를 생성할 수 있습니다. 이 간단한 예제는 인간의 모양을 생성합니다 (잘 … 제한된 예술적 능력을 가지고 얻을 수 있는 만큼 가깝게) 그림 3에 표시된 것처럼 화면에 렌더링합니다. 다음 예제에서는 녹색 브러시로 채워진 타원을 그리는 방법을 보여 주었습니다. 이 예제에서는 5픽셀 두께의 빨간색 펜을 생성하고 이를 사용하여 다른 선을 그립니다.

Share this post