Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从CDC创建Gdiplus::位图_C++_Mfc_Gdi+_Gdi_Msdn - Fatal编程技术网

C++ 如何从CDC创建Gdiplus::位图

C++ 如何从CDC创建Gdiplus::位图,c++,mfc,gdi+,gdi,msdn,C++,Mfc,Gdi+,Gdi,Msdn,我正在尝试从设备上下文创建Gdiplus::位图。我使用的功能是: Bitmap bitmap((HBITMAP)myDC.GetCurrentBitmap(), (HPALETTE)myDC.GetCurrentPalette()); …但当我在屏幕上绘制位图时,我看到的只是一个黑色矩形。我认为我使用位图构造函数是错误的,因为在文档中它是这样写的: 不要向GDI+位图::位图构造函数传递GDI位图或 当前或以前被选入 设备上下文 但我不知道该怎么做。我尝试的另一种方法是使用: 要从窗口捕获先

我正在尝试从设备上下文创建Gdiplus::位图。我使用的功能是:

Bitmap bitmap((HBITMAP)myDC.GetCurrentBitmap(), (HPALETTE)myDC.GetCurrentPalette());
…但当我在屏幕上绘制位图时,我看到的只是一个黑色矩形。我认为我使用位图构造函数是错误的,因为在文档中它是这样写的:

不要向GDI+位图::位图构造函数传递GDI位图或 当前或以前被选入 设备上下文

但我不知道该怎么做。我尝试的另一种方法是使用:

要从窗口捕获先前存在的图像,必须使用Windows图形设备接口GDI函数(如BitBlt或StretchBlt)将图像从屏幕复制到内存位图。然后可以在重载位图构造函数中使用此内存位图,该构造函数将HBITMAP作为参数


但我也无法做到这一点。

您提供的文档准确地告诉了您需要做什么。向我们展示一些代码,并告诉我们哪些代码不起作用。HBITMAP hBmp=GetCurrentObjectDC,OBJ_BITMAP;我会给你一张HBITMAP。。将其用于位图的构造函数。否则,通过设置BITMAPINFO结构并调用CreateDIBitmap从DC手动创建HBITMAP。非常感谢@Brandon,HBITMAP hBmp=GetCurrentObjectDC,OBJ_BITMAP;我不知道为什么我不能通过google找到它,再次感谢:@Mark Ransom,sry我没有指定我不能做什么,但我尝试了很多方法从DC获得HBITMAP,但在使用Gdiplus::Bitmap构造函数时,他们都不能给我所需。