다음을 통해 공유


메모리 디바이스 컨텍스트

애플리케이션이 실제 디바이스로 보내는 대신 메모리에 출력을 배치할 수 있도록 하려면 메모리 디바이스 컨텍스트라는 비트맵 작업에 특수 디바이스 컨텍스트를 사용합니다. 메모리 DC를 사용하면 시스템에서 메모리의 일부를 가상 디바이스로 처리할 수 있습니다. 애플리케이션이 일반 그리기 화면에서 만든 비트맵의 색 데이터를 저장하는 데 일시적으로 사용할 수 있는 메모리의 비트 배열입니다. 비트맵은 디바이스와 호환되므로 메모리 DC를 호환되는 디바이스 컨텍스트라고도 합니다.

메모리 DC는 특정 디바이스에 대한 비트맵 이미지를 저장합니다. 애플리케이션은 CreateCompatibleDC 함수를 호출하여 메모리 DC를 만들 수 있습니다.

메모리 DC의 원래 비트맵은 단순히 자리 표시자입니다. 해당 차원은 1픽셀씩 1픽셀입니다. 애플리케이션에서 그리기를 시작하려면 먼저 SelectObject 함수를 호출하여 DC에 적절한 너비와 높이의 비트맵을 선택해야 합니다. 적절한 차원의 비트맵을 만들려면 CreateBitmap, CreateBitmapIndirect 또는 CreateCompatibleBitmap 함수를 사용합니다. 비트맵을 메모리 DC로 선택한 후 시스템은 단일 비트 배열을 지정된 픽셀 사각형에 대한 색 정보를 저장할 수 있을 만큼 큰 배열로 바꿉니다.

애플리케이션이 CreateCompatibleDC 에서 반환된 핸들을 그리기 함수 중 하나에 전달하면 요청된 출력이 디바이스의 그리기 화면에 표시되지 않습니다. 대신 시스템은 결과 선, 곡선, 텍스트 또는 영역의 색 정보를 비트 배열에 저장합니다. 애플리케이션은 BitBlt 함수를 호출하고 메모리 DC를 원본 디바이스 컨텍스트로 식별하고 창 또는 화면 DC를 대상 디바이스 컨텍스트로 식별하여 메모리에 저장된 이미지를 드로잉 화면에 다시 복사할 수 있습니다.

색상표 디바이스에 DIB 또는 DIB에서 만든 DDB를 표시할 때 시스템 팔레트의 레이아웃과 일치하도록 논리 팔레트를 정렬하여 이미지를 그리는 속도를 향상시킬 수 있습니다. 이렇게 하려면 NUMRESERVED 값을 사용하여 GetDeviceCaps 를 호출하여 시스템의 예약된 색 수를 가져옵니다. 그런 다음 GetSystemPaletteEntries 를 호출하고 논리 팔레트의 첫 번째 및 마지막 NUMRESERVED/2 항목을 해당 시스템 색으로 채웁니다. 예를 들어 NUMRESERVED가 20인 경우 논리 팔레트의 첫 번째 및 마지막 10개 항목을 시스템 색으로 채웁니다. 그런 다음 논리적 팔레트의 나머지 256-NUMRESERVED 색(이 예제에서는 나머지 236색)을 DIB의 색으로 채우고 이러한 각 색에 PC_NOCOLLAPSE 플래그를 설정합니다.

색 및 색상표에 대한 자세한 내용은 색을 참조 하세요. 비트맵 및 비트맵 작업에 대한 자세한 내용은 비트맵을 참조하세요.