问题标签 [gdi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mfc - 未重绘 WS_EX_TRANSPARENT 样式的静态控件
我正在尝试创建一个在绘制 32 位位图时实现每像素 alpha 混合的控件。
我扩展了 CWnd 并在资源编辑器中使用静态控件。我设法正确地绘制了 alpha 通道,但静态控件仍然继续绘制灰色背景。
我覆盖了 OnEraseBkgnd 以防止控件绘制背景,但它没有用。我终于设法通过使用 WS_EX_TRANSPARENT 做到了。
我现在的问题是我的控制权置于其他控制权之上。第一次绘制对话框时一切正常……但如果我单击“父”控件(即我控制下的那个),我的控件不会收到 WM_PAINT 消息。所以不再画了。
如果我最小化应用程序并再次最大化它,则再次绘制控件。
拜托,谁能给个提示?我对这个控制感到疯狂!!!
谢谢。
c# - 带有图标的 GDI 句柄。l
我有一个winforms 应用程序。我有一个带有很多图标的用户控件。用户可以在表单上多次加载此控件(在选项卡式布局中)。现在我每次创建控件时都在加载图标(在应用程序中可能高达 50 次)。有没有办法在应用程序中缓存这些图标。如果我这样做,会减少我正在使用的 gdi 句柄的数量,因为这已成为一个问题。
c++ - C++/Win32:如何从 HBITMAP 中获取 alpha 通道?
我有一个HBITMAP
包含 alpha 通道数据。我可以使用::AlphaBlend
GDI 函数成功渲染它。
但是,当我调用::GetPixel
GDI 函数时,我永远不会返回带有 alpha 分量的值。文档确实说它返回像素的 RGB 值。
有没有办法检索像素中的 alpha 通道值HBITMAP
?
我希望能够检测何时使用 ::AlphaBlend,以及何时使用老式方法将源 HBITMAP 中的特定颜色视为透明。
回答
使用 GetDIBits 检索图像的第一条(或更多条)扫描线:
c++ - 如何从 HBITMAP 创建 Gdiplus::Bitmap,保留 alpha 通道信息?
当我使用 Bitmap::FromHBITMAP 函数创建一个新的 Gdiplus::Bitmap 时,生成的位图是不透明的 - 原始 HBITMAP 的部分透明度没有被保留。
有没有办法从 HBITMAP 创建一个 Gdiplus::Bitmap ,它带来了 alpha 通道数据?
c++ - 将 hdc 内容复制到位图
如何将 HDC 的内容复制到位图?
gdi+ - GDI+到GDI之间转换的奇怪问题:Bitmap和HBitmap
我想将 gdi+ Bitmap 转换为 gdi 对象 HBitmap。
我正在使用以下方法:
img 对象正在对话框上绘制。当这部分方法被调用时,奇怪的事情发生了!窗口中显示的img改变了!它变得更清晰或更锐利。我的问题是会发生什么?
gdi - 如何设置 GDI HDC 的可绘制区域?
我想在 HDC 上绘制 HBITMAP,
我使用了 StretchDIBits。它工作正常。::拉伸DIBits。
但是,我只想要一个窗口来观看绘图结果,在窗口旁边,我希望stretchDIBits不生效(它不能在其他区域上绘制),我该怎么做?
delphi - 设置 Canvas.LineTo 的线端样式
有没有办法为 TCanvas.LineTo 方法设置线端的样式?它似乎默认为圆形末端,当 Pen.Width 设置为较大的值(例如 9)时,对于一行不同颜色的几行来说,这看起来非常糟糕。
它看起来像这样(圆形末端):
(其中 * 是蓝色,. 是黄色)
如果在中间线之后画两条外线,那就更糟了:
我希望它看起来像这样(直线结束):
Pen 似乎没有为此提供任何设置,LineTo 方法也没有。是否有我可以调用的 Windows API 函数?
c++ - GDI+ 抖动问题
我有一个使用适用于 Windows 的 Win32 API 的 C++ 应用程序,当我不知道为什么会这样时,我遇到了 GDI+ 抖动问题。
我有一个自定义控件(自定义窗口)。当我收到 WM_PAINT 消息时,我在图形设备上使用 FillPolygon 绘制了一些多边形。此图形设备是使用 BeginPaint 的 HDC 创建的。
但是,当多边形出现在屏幕上时,它们会抖动而不是透明,并且似乎只显示很少的颜色(可能是 256 种?)让我想知道发生了什么。
我没有做任何特别的事情,据我所知,这是一个应该可以正常工作的简单示例。难道我做错了什么?
编辑:没关系。它只发生在远程桌面上,即使 C# 示例没有在远程桌面上抖动。远程桌面设置为 32 位颜色,所以我不知道这是怎么回事。
gdi - 如何通过 StretchDIBits 模仿缩略图周围的阴影?
我现在正在编写一个图像查看器,它用于查看缩略图。由于它很丑,我决定画阴影圆形缩略图。
有背景色。我正在使用 StretchDIBits 在缩略图的位置绘制阴影图像。然而,它覆盖了背景颜色真的很烦人......当背景是白色时,它看起来很完美。但如果背景不是白色的,它有一个白色的边框。
所以我使用 AlphaBlend,首先将阴影图像绘制到 DC 上,然后使用 AlphaBlend 到背景上。但是,我仍然可以看到白色边框。
不管背景是什么,有什么理由要生成完美的阴影。