선은 시작점과 끝점의 두 지점으로 식별되는 래스터 디스플레이(또는 인쇄된 페이지의 점 집합)에서 강조 표시된 픽셀 집합입니다. 시작점에 있는 픽셀은 항상 선에 포함되며 끝점에 있는 픽셀은 항상 제외됩니다. (이러한 종류의 줄을 포괄 전용이라고도 합니다.)

애플리케이션이 선 그리기 함수 중 하나, GDI(그래픽 디바이스 인터페이스) 또는 경우에 따라 디바이스 드라이버를 호출할 때 강조 표시해야 하는 픽셀을 결정합니다. GDI는 애플리케이션에서 그래픽 함수 호출을 처리하고 해당 호출을 디바이스 드라이버에 전달하는 DLL(동적 연결 라이브러리)입니다. 디바이스 드라이버는 GDI에서 입력을 수신하고, 입력을 디바이스 명령으로 변환하고, 해당 명령을 적절한 디바이스에 전달하는 DLL입니다. GDI는 DDA(디지털 차등 분석기)를 사용하여 선을 정의하는 픽셀 집합을 결정합니다. DDA는 선의 각 점을 검사하고 표시 화면에서 해당 픽셀(또는 인쇄된 페이지의 점)을 식별하여 픽셀 집합을 결정합니다. 다음 그림에서는 간단한 DDA를 사용하여 강조 표시된 선, 시작점, 끝점 및 픽셀을 보여 줍니다.

선을 따라 놓는 픽셀의 픽셀 눈금, 시작 및 끝점, 선 및 음영을 보여 주는 그림

가장 간단하고 가장 일반적인 DDA는 Bresenham 또는 증분 DDA입니다. 이 알고리즘의 수정된 버전은 Windows에서 선을 그립니다. 증분 DDA는 단순성으로 유명하지만 부정확성으로도 유명합니다. 가장 가까운 정수 값으로 반올림되므로 애플리케이션에서 요청한 원래 줄을 나타내지 못하는 경우가 있습니다. GDI에서 사용하는 DDA는 가장 가까운 정수로 반올림되지 않습니다. 따라서 이 새 DDA는 애플리케이션에서 요청한 원래 줄과 모양이 훨씬 더 가까운 출력을 생성합니다.

참고

애플리케이션에 새 DDA를 사용하여 수행할 수 없는 줄 출력이 필요한 경우 LineDDA 함수를 호출하고 개인 DDA(LineDDAProc)를 제공하여 자체 선을 그릴 수 있습니다. 그러나 LineDDA 함수는 선 그리기 함수보다 훨씬 느린 선을 그립니다. 속도가 주요 관심사인 경우 애플리케이션 내에서 이 함수를 사용하지 마세요.

 

애플리케이션은 새 DDA를 사용하여 단일 선과 여러 개의 연결된 선 세그먼트를 그릴 수 있습니다. 애플리케이션은 LineTo 함수를 호출하여 한 줄을 그릴 수 있습니다. 이 함수는 현재 위치에서 지정된 끝점까지 선을 그립니다. 애플리케이션은 Polyline 함수를 호출하여 각 선 세그먼트의 끝점을 지정하는 점 배열을 제공하여 일련의 연결된 선 세그먼트를 그릴 수 있습니다. 애플리케이션은 PolyPolyline 함수를 호출하고 필요한 끝점을 제공하여 연결되지 않은 여러 개의 연결된 선 세그먼트를 그릴 수 있습니다.

다음 그림에서는 LineTo, PolylinePolyPolyline 함수를 호출하여 만든 줄 출력을 보여 줍니다.

직선,