Red de conocimiento informático - Material del sitio web - En programación mfc, cómo guardar mediante programación la imagen en formato BMP en el área de visualización

En programación mfc, cómo guardar mediante programación la imagen en formato BMP en el área de visualización

Aquí hay una función para su referencia:

Simplemente reemplace srcDC con el DC de la ventana que desea guardar:

HBITMAP CopyScreenToBitmap(LPRECT lpRect)

{

int m_xScreen = GetSystemMetrics(SM_CXSCREEN);

//Obtiene los píxeles de la pantalla en la dirección y ()

int m_yScreen = GetSystemMetrics(SM_CYSCREEN) ;

HDC hScrDC,hMemDC;

HBITMAP hBitmap,hOldBitmap;

int nX1,nX2,nY1,nY2;

int nWidth ,nHeight;

if (IsRectEmpty(lpRect))

{

return FALSE;

}

//Crea una tabla de descripción de dispositivo para la pantalla

hScrDC = CreateDC("DISPLAY",NULL,NULL,NULL);

//Crea un dispositivo de memoria compatible descripción de la tabla de descripción del dispositivo de pantalla Tabla

hMemDC = CreateCompatibleDC(hScrDC);

// Obtener las coordenadas del área seleccionada

nX1 = lpRect-> izquierda;

nY1 = lpRect->arriba;

nX2 = lpRect->derecha;

nY2 = lpRect->abajo;

//Asegúrate de que el área seleccionada sea visible de

if (nX1 < 0)

nX1 = 0;

if (nY1 < 0)

nY1 = 0;

si (nX2 > m_xScreen)

nX2 = m_xScreen;

si (nY2 > m_yScreen)

nY2 = m_yScreen;

nWidth = nX2 - nX1;

nHeight = nY2 - nY1;

// Crea un mapa de bits compatible con el dispositivo de pantalla context

hBitmap = CreateCompatibleBitmap(hScrDC,nWidth,nHeight);

//Seleccione el nuevo mapa de bits en la tabla de contexto del dispositivo de memoria

hOldBitmap = (HBITMAP) SelectObject(hMemDC,hBitmap);

// Copia la tabla de contexto del dispositivo de pantalla a la tabla de contexto del dispositivo de memoria

BitBlt(hMemDC,0,0,nWidth,nHeight,hScrDC,nX1 ,nY1,SRCCOPY);

//Obtener el identificador del mapa de bits de la pantalla

hBitmap = (HBITMAP)SelectObject(hMemDC,hOldBitmap);

// Borrar

DeleteDC(hScrDC);

DeleteDC(hMemDC);

devuelve hBitmap;

}