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) p>
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;
}