Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo escalar la imagen e ingresarla en cdc

Cómo escalar la imagen e ingresarla en cdc

1. Quiero usar un CDC para escalar la imagen original e ingresarla en un objeto Bitmap, y luego cargarla en memDC.DrawState() para mostrarla.

CDC VdcMem ; //Crea un CDC, utilizado para recibir la imagen original y ampliarla

VdcMem.CreateCompatibleDC(&memDC); //Crea un CDC compatible con la ventana del cliente memDC

VdcMem; .SelectObject(hBitmap); //Selecciona el objeto de mapa de bits original en CDC

memDC.SetStretchBltMode(HALFTONE); //Establece el modo de conversión de color del mapa de bits

memDC.StretchBlt(0, 0,300,1000,&VdcMem ,0,0,image_size.cx,image_size.cy,SRCCOPY);//Ampliar y mostrar En este punto, la imagen escalada se ha mostrado en el área del cliente.

Puede an. Se utilizará el CDC intermedio para ejecutar la operación final de escalado en un solo paso (esto significa escalar en la memoria), luego lo cargará en un nuevo objeto de mapa de bits temporal, extraerá su información HBITMAP como el tercer parámetro de DrawState(), ¿cómo implementarlo?

2. Cree un nuevo objeto de mapa de bits, escale la imagen original en la memoria y luego obtenga el HBITMAP del nuevo mapa de bits

CBitmap hbmp

HBITMAP; hbitmap;

CDC dcMemory

dcMemory.CreateCompatibleDC(&dc);

CBitmap bm; , 1000);

CBitmap* pOldBitmap = dcMemory.SelectObject(&bm);

memDC.DrawState(point,image_size,hBitmap,DST_BITMAP ?DSS_NORMAL);

En realidad, la clave es cómo escalar la imagen y generarla a través de DrawState() sin destruir la imagen original.

No sé si hay una función en la clase CBitmap para escalar directamente la imagen y asignarla a la nueva de objetos CBitmap

.