所以我一直在尝试重新缩放位图而不打印原始图像并重新打印重新缩放的图像。我正在尝试使用基于 MSDN Microsoft 重新缩放图像功能的 StretchBlt():
https://msdn.microsoft.com/en-us/library/windows/desktop/dd162950(v=vs.85).aspx
但这需要一个连接到源的辅助 hdc,如果不先打印 HBITMAP,就无法进行拉伸。有没有办法将 HBITMAP 转换为 HDC?我已经能够从 HBITMAP 中获取 HANDLE,这可能会提供更直接的路线。我可以做的另一件事是在标准位图中分配的内存(未保存)中创建一个调整大小的位图并打印它。
我打印位图的标准方式是:
HBITMAP hBitmap;
static HANDLE hDIB = NULL;
CHAR szFileName[MAX_PATH] = "fileName.bmp";
hDIB = OpenDIB((LPSTR)szFileName);
hBitmap = BitmapFromDIB(hDIB, NULL);
DrawBitmap(hdc, x, y, hBitmap, SRCCOPY);
我可以尝试的另一个选择是研究另一种显示 bmp 的方法。我对win32很陌生,所以我不知道完成这项任务的任何其他方法。关于如何在不首先打印它的情况下重新缩放 BITMAP 的任何见解。