Articles of 位图

如何获取窗口的位图对象在C + +的屏幕截图?

如何获取窗口的位图对象在C + +的屏幕截图? 假设我已经有窗口句柄了。 而且我也想知道当它处于最小化状态时是否可以获得窗口的屏幕截图 ? 这里的C ++是指所有与Windows XP +(win32)相关的库的VC ++。

Gdiplus :: Bitmap :: FromHICON是否正确处理“黑白图标”?

如MSDN ICONINFO中所述 ,根据结构是否定义黑白图标, hbmMask和hbmColor的格式不同。 hbmMask types:HBITMAP 图标位掩码位图。 如果此结构定义了黑白图标,则此位掩码将被格式化,以使上半部分为图标AND位掩码,下半部分为图标XOR位掩码。 在这种情况下, 高度应该是两倍的偶数 。 如果这个结构定义了一个颜色图标,这个掩码只定义了图标的AND位掩码。 这意味着我们需要检测hbmColor的存在来正确计算图标的高度。 但是,后来我注意到Gdiplus::Bitmap::FromHICON() ,它接受HICON并将其转换为Gdiplus::Bitmap 。 由于我没有看到有关GDI +中“黑白”图标的任何材料,这种方法是否在内部处理这种情况? (不幸的是,我没有一个方便的testing图标,我也不知道如何创build一个正确的testing用例。)

Win32 C / C ++从内存缓冲区加载映像

我想在Win32应用程序中加载一个图像(.bmp)文件,但是我不想从Windows API使用标准的LoadBitmap / LoadImage:我想从已经在内存中的缓冲区加载它。 我可以直接从文件中直接加载位图并将其打印在屏幕上,但是这个问题让我陷入困境。 我正在寻找的是一个这样的function: HBITMAP LoadBitmapFromBuffer(char* buffer, int width, int height);

只使用GDI()保留图像的红色通道

我最初有一个彩色图像,我通过只复制红色通道,即RGB的前8位(24位),使其灰度。 这是因为一些处理需要图像灰度。处理后,我必须在屏幕上使用GDI显示此图像。 所以我必须把灰色值复制到最终输出的红色chanel。 像setpixel(i,j,RGB(grayvalue,0,0))。 我如何实现这个使用GDI?

高效地获取Windows桌面的屏幕截图

有没有比下面的代码更有效的方式获得Windows桌面(使用GDI或任何其他库)的副本 HDC dcDesktop; HDC dcMem; HBITMAP hbmpMem; HBITMAP hOriginal; BITMAP bmpDesktopCopy; dcDesktop = GetDC( GetDesktopWindow() ); dcMem = CreateCompatibleDC( dcDesktop ); hbmpMem = CreateCompatibleBitmap( dcMem, m_lWidth, m_lHeight ); BitBlt( dcMem, 0, 0, m_lWidth, m_lHeight, dcDesktop, 0, 0, SRCCOPY ); // Copy the hbmpMem to the desktop copy GetObject(hbmpMem, sizeof(BITMAP), (LPSTR)&bmpDesktopCopy);

将BMP加载到OpenGL纹理切换红色和蓝色的颜色。 (C ++ /视窗)

我试图加载一个OpenGL纹理的位图并将其显示到屏幕上,但是当我这样做时,红色和蓝色值似乎切换(例如:蓝色图像显示为橙色,绿色图像保持不变等。 )。 这个问题只存在加载位图时,我可以加载.png相对无错。 这是我用来加载位图和设置纹理的代码。 我正在使用DevIl,但是我不确定这是多么的相关,因为当我使用一个不同的系统(我不记得是什么,这是window.h中的一个函数,我相信)存在问题: ilOriginFunc(IL_ORIGIN_LOWER_LEFT); ilEnable(IL_ORIGIN_SET); ILuint image; ilGenImages(1, &image); ilBindImage(image); ilLoad(IL_BMP, "Data/NeHe.bmp"); // Incidentally, loading a png, although it fixes the problem, // rotates the image 180 degrees. Not sure if that's important or not, // But it's why I added the first line of code glGenTextures(3, &_texture[0]); glBindTexture(GL_TEXTURE_2D, _texture[0]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); […]

BITMAPINFO结构的bmiColors字段

BITMAPINFO结构具有以下声明 typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[1]; } BITMAPINFO; 为什么RGBQUAD数组是静态的? 为什么它不是一个指针?

鼠标光标位图

我试图从鼠标光标获取位图,但下一个代码,我只是无法获得颜色。 CURSORINFO cursorInfo = { 0 }; cursorInfo.cbSize = sizeof(cursorInfo); if (GetCursorInfo(&cursorInfo)) { ICONINFO ii = {0}; int p = GetIconInfo(cursorInfo.hCursor, &ii); // get screen HDC dc = GetDC(NULL); HDC memDC = CreateCompatibleDC(dc); //SelectObject(memDC, ii.hbmColor); int counter = 0; // byte* bits[1000];// = new byte[w * 4]; BITMAPINFO bmi; memset(&bmi, 0, sizeof(BITMAPINFO)); bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); […]

DirectShow – 获取video帧

我正在创build一个Windowsvideo捕获应用程序,并使用DirectShow进行捕获。 随着每帧的进入,我想把它作为一个原始的RGB位图到一个缓冲区,在这一点上我的代码将做我需要的任何处理。 我一直在寻找类似于我想要做的样本,并且在我看起来在线的任何地方,人们推荐使用IMediaDet和/或ISampleGrabber接口来进行逐帧捕获。 不幸的是,两者都被弃用,甚至没有在最新版本的Windows SDK中。 在DirectShow中进行逐帧捕获的最佳(现代)方式是什么? 如果没有,我是否应该使用一个不同的库,这将使我逐帧捕获?

Windows编程DialogBox背景图片

有什么好的教程或方法来添加到Windows的DialogBox的背景图像? 类似的东西: 我的资源文件(修剪了一下): #include <afxres.h> #include "WindowSettings.h" // for IDC_?, IDD_DLG // Dialog Box Template for IDD_DLG // IDD_DLG DIALOGEX 200, 100, 200, 350 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION DLG_NAME FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN LTEXT "Display Device", IDC_STATIC, 10, 5, 50, 10 COMBOBOX IDC_DIS, […]