Articles of 位图

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, […]

Windows成像组件 – Direct2D C ++ – 绘图,保存

使用Windows映像组件(WIC),我想为我的Windows桌面应用程序(Direct2D / C ++与Windows 7 SP1 – Visual Studio 2013) select任何types的RenderTarget(Direct2D Hwnd / Bitmap / WICBitmap – 等)进行绘制 创build一个空的位图(D2D1Bitmap或IWICBitmap – 无论哪个适用) 开始绘制 – 填充颜色,绘制一些线条和椭圆 – 结束绘制==>(全部在位图中) 在某些时候,我需要将绘制的内容保存在位图中作为我的电脑中的图像 将位图放在渲染目标的x1,y1(左上angular的xy坐标)和x2,y2(右下angular的xy坐标)中。 因为窗口的其余部分将被工具栏使用。 我如何使用C ++ / Direct2D来实现这一目标? GDI +我的function代码: Bitmap* pBmp = NULL; //create null or empty bitmap Graphics* pGrBuf = NULL; //initialise graphics to null pBmp = new […]

复制另一个HBITMAP的位图

我想写一个类来包装位图function在我的程序中。 一个有用的function是从另一个位图句柄复制位图。 我有点卡住了: void operator=( MyBitmapType & bmp ) { HDC dcMem; HDC dcSource; if( m_hBitmap != bmp.Handle() ) { if( m_hBitmap ) this->DisposeOf(); // copy the bitmap header from the source bitmap GetObject( bmp.Handle(), sizeof(BITMAP), (LPVOID)&m_bmpHeader ); // Create a compatible bitmap dcMem = CreateCompatibleDC( NULL ); m_hBitmap = CreateCompatibleBitmap( dcMem, m_bmpHeader.bmWidth, m_bmpHeader.bmHeight ); […]

如何从Windows剪贴板中读取位图

我正在编写一个非常小的C ++程序来帮助我制作animation精灵。 我希望它能够将数据从photoshop复制到剪贴板,在我的程序中进行操作,然后用转换覆盖剪贴板。 但问题是,我不知道如何从Photoshop中读取初始剪贴板。 我可以加载剪贴板与GetClipboardData(CF_DIB) ,并得到一个有效的句柄,但我不知道如何使用该句柄。 我已经尝试过使用SFML的Image::LoadFromMemory(handle, GlobalSize(handle)) ,它能够从内存中加载位图文件,但似乎没有工作。 我需要真正parsing整个格式吗? 在这种情况下,我会考虑什么格式的结构? 那么可能有什么办法可以快速修改数据,使其看起来像位图文件? 使用Windows API将其保存到文件可能更容易吗? (我可以用SFML加载这个文件来编辑,那样) 这只是一个快速而肮脏的工具,可以帮助我们在Photoshop中节省大量的工作量,因此效率或稳健性并不重要。

如何获取窗口的位图对象在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);