【发布时间】:2011-11-20 10:01:27
【问题描述】:
我正在使用标准 Win32 API 编写程序。当用户在我的程序中选择图片时,我想绘制位图以使其突出显示/选中。使用标准的 Windows 隐喻,这意味着绘制一个使用系统突出显示颜色抖动的位图版本(我不确定“抖动”在技术上是正确的术语,但请参阅下面的示例)。我已经尝试了几种方法来使用 BitBlt 和类似功能来实现这一点,但我似乎无法弄清楚我需要的确切步骤。如果有一个标准的 Win32 函数可以处理这个问题,我找不到它。有谁知道我如何做到这一点?
未选中的图像应如下所示:
选定的图像应如下所示:
【问题讨论】:
-
我建议不要抖动,而是更改背景颜色或绘制轮廓边框。例如,当您突出显示桌面上的某个项目时,图标本身不会改变,但背景会改变颜色。这种方法的好处是用户仍然可以清楚地看到原始图片。此外,有些图像可能很难与抖动版本区分开来,尤其是当原件与选择颜色相似时。在图像外部使用颜色可以避免这个问题。
-
是的,总体上我绝对同意你的理念,但我的目标是尽可能地模仿 Chrome 网络浏览器使用的图像选择,这就是它的作用。
-
在列表中选择项目与内容(从 qu 中不清楚这适用于您的情况)可能需要不同的 UI:列表中的项目通常在它们周围有足够的空间,所以如果它们被倒置,一些倒边框也会显示。内容比较棘手;图像没有边框空间,这就是文本编辑器使用变色方法的原因。因此,如果您实际上将图像作为文本内容的一部分并与文本内容一起突出显示,那么这是与 Chrome 一致的适当做法。但如果这些是列表中的图像,这与 Chrome 所做的情况不同。