首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(使用GDI+)在.NET中创建逼真的荧光笔的最佳方法是什么?

(使用GDI+)在.NET中创建逼真的荧光笔的最佳方法是什么?
EN

Stack Overflow用户
提问于 2009-05-21 03:27:05
回答 3查看 553关注 0票数 1

如何使用GDI+在.NET中创建逼真的荧光笔(模拟真实世界的荧光笔)?它旨在用于图形对象,而不是可选文本。

使用透明画笔(带有alpha通道)不能完成这项工作,因为画笔覆盖的区域下面的所有东西都变得“模糊”,我希望“前景”(主要是文本)保持清晰(保持颜色不变)。

只使用背景区域的ColorMap可以工作,但这将需要大量代码来确定背景区域和某个阈值(我可以从第一个像素或右上角像素或其他地方选择背景)。

对一个区域进行着色的ColorMatrix似乎也是一种选择,但我看到了与透明画笔解决方案相同的问题(我不是ColorMatrices专家,所以我可能会忽略一些东西)。

我想我需要一个前景和背景颜色的动态阈值,但这可能会降低高亮笔的可用性。

我既可以接受填充“选定”区域的解决方案,也可以接受类似画笔的解决方案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-10 03:09:29

黄色荧光灯让黄色光线通过,而阻挡其他光线。

在RGB颜色模型中,这意味着你让红色和绿色通过,而块蓝色。

我们可以使用示例图片来查看高亮笔(Microsoft的截图工具)在通道上的效果:

原始图像

突出显示的

颜色通道

因此,您需要做的是将blue值设置为零,无论您希望荧光笔出现在哪里。

不幸的是,没有混合模式、图像属性或颜色矩阵,只能用于绘制one颜色分量。在GDI+中实现这一点的唯一方法是使用LockBits

票数 1
EN

Stack Overflow用户

发布于 2009-05-21 03:58:44

这里有一篇文章讨论了如何在GDI+中进行各种混合操作。根据我的实验,深色或倍增混合模式可以做到这一点。

http://www.codeproject.com/KB/GDI-plus/KVImageProcess.aspx

票数 3
EN

Stack Overflow用户

发布于 2009-05-21 03:54:23

我在想,一个给定宽度和高度的画笔,当它在屏幕的一个区域上拖动时,会抓取它下面的部分并对其进行分析,将非文本颜色设置为黄色,而不使用文本颜色,然后将更新后的部分放回屏幕上。这应该是相对快速和容易做到这一点,尽管您确实必须命中每个像素(并使用某种阈值来确定哪些是文本,哪些不是,正如您所提到的那样)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/891289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档