12得票3回答
从内存缓冲区创建HBITMAP

我有一个应用程序,它从数据库中加载一些blob数据,这些数据可以表示各种位图和图标的png格式或原始二进制数据。这些数据存储在std :: vector <unsigned char>中。我正在使用CImageList对象在树视图、工具栏图像等地方显示各种图像,但问题是从内存中创建...

12得票4回答
为什么GetObject返回一个带有空bmBits的位图?

背景: 我正在尝试截取另一个窗口的屏幕截图并将其传入OpenCV。我在网上找到了一些代码,应该能够将BITMAP转换为OpenCV可以使用的东西。不幸的是,我遇到了一些问题。 问题: 为什么bmBits属性/成员总是为空?(我也尝试过使用PrintWindow而不是BitBlt,结果相同)#...

12得票4回答
指定GDI设备上下文的DPI

我有一个生成meta文件(EMF)的应用程序。它使用参考设备(即屏幕)来渲染这些meta文件,因此meta文件的DPI取决于代码运行在哪台机器上。 假设我的代码要创建一个8.5英寸x 11英寸的meta文件。使用我的开发工作站作为参考,我得到了一个EMF,其中 rclFrame是{0、0...

12得票2回答
如何使用c++/WinAPI绘制具有透明背景的文本?

如何在WinAPI中使用透明颜色绘制文本?通常我使用SetBkMode(hDC,TRANSPARENT),但现在我需要使用双缓冲。用这种方式,图像绘制正确,但文本绘制不正确(有黑色背景)。case WM_PAINT: { hDC = BeginPaint(hWnd, &pain...

12得票3回答
什么是图形上下文?

Graphic Context(或Windows中的Device Context)到底封装了什么? 网络上的各种定义都认为,上下文封装了各种图形操作的参数。X11,Mac OS,Windows。但不清楚上下文是否还封装了执行图形操作所需的内存缓冲区。 X11入口中提到了单独的Drawabl...

11得票1回答
SelectObject(dc, hBMP) 是什么作用?

我猜我理解了如果我在“设备上下文”中选择“对象”,并且如果这个对象是一个画刷,字体,笔,那么这些对象的特性将用于在设备上下文上进行绘图。 然而,我不明白在将位图选择到设备上下文之后会发生什么,更不用说为什么需要这样做。 我有一个程序,在某个地方执行了以下操作:HDC dc = ::GetD...

11得票1回答
CreateCompatibleBitmap和CreateDIBSection(内存DC)

从我在这里读到的内容来看,大多数Windows GDI函数都是加速的。因此,例如对BitBlt或AlphaBlend的调用会使用硬件加速(如果可用)。它还提到窗口的内容仅保留在视频内存中。现在,这对于窗口DC来说非常好和正确,但是我如何使用驻留在视频卡内存中的内存DC?一旦我们完成了这个过程,...

11得票2回答
C# 在面板上绘图

我正在制定一份日程表,用面板表示时间段,而约会则是在其上方的另一个面板。 用户可以上下滚动以移动可见范围。当约会超出可见范围时,我想要有一个Zig-Zag指示它延伸到可见范围之外。 我已经确定了这种情况,然后调用私有函数drawZigZag(Panel p, int direction);...

11得票11回答
GDI+发生了一般性错误。

[ExternalException (0x80004005): A generic error occurred in GDI+.] IpitchitImageHandler.Data.ImageRepository.AddNewTempImage(Stream image, Stri...

11得票1回答
C++直接绘制到屏幕上(类似于叠加层)

现在许多笔记本电脑都有FN热键来调节音量、亮度等,并通常显示一个视觉提示,完全覆盖在操作系统之上。对于新的Windows 8/8.1系统,这个视觉提示甚至出现在桌面外部的Metro侧栏中。它们不能绘制在无边界窗口内,否则它不会出现在Metro界面上。 我尝试研究DirectX是否可以直接绘制...