다음을 통해 공유


메모리 디바이스 컨텍스트

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

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

메모리 DC의 원래 비트맵은 단순히 자리 표시자입니다. 크기는 1픽셀 x 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 플래그를 설정합니다.

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