Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在.NET中(使用GDI+;)创建真实荧光笔的最佳方法是什么?_.net_Image_Graphics_Gdi+_Image Manipulation - Fatal编程技术网

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

在.NET中(使用GDI+;)创建真实荧光笔的最佳方法是什么?,.net,image,graphics,gdi+,image-manipulation,.net,Image,Graphics,Gdi+,Image Manipulation,如何使用GDI+在.NET中创建真实的荧光笔(模拟真实世界的荧光笔)?它用于图形对象,而不是可选文本 使用透明画笔(带有alpha通道)不起作用,因为画笔覆盖区域下方的所有内容都变得“模糊”,我希望“前景”(主要是文本)保持清晰(保持其颜色) 仅对背景区域使用颜色贴图可能会起作用,但这需要大量代码来确定背景区域和某个阈值(我可以从第一个像素或右上像素之类的地方选择背景) 对一个区域进行着色的ColorMatrix似乎也是一个选项,但我看到的问题与透明笔刷解决方案相同(我不是ColorMatrix

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

使用透明画笔(带有alpha通道)不起作用,因为画笔覆盖区域下方的所有内容都变得“模糊”,我希望“前景”(主要是文本)保持清晰(保持其颜色)

仅对背景区域使用颜色贴图可能会起作用,但这需要大量代码来确定背景区域和某个阈值(我可以从第一个像素或右上像素之类的地方选择背景)

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

我想我需要为前景和背景色设置一个动态阈值,但这可能会降低荧光灯的可用性


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

我认为给定宽度和高度的画笔在拖动屏幕某个区域时,会抓住下方的部分并进行分析,将非文本颜色设置为黄色,而不使用文本颜色,然后将更新的部分放回屏幕上。这应该是相对快速和容易的,尽管你必须点击每个像素(并使用某种阈值来确定什么是文本,什么不是,正如你所提到的)。

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

本文讨论了如何在GDI+中执行各种混合操作。根据我的实验,深色或多重混合模式就可以了


这里有一篇文章讨论如何在GDI+中执行各种混合操作。根据我的实验,深色或多重混合模式就可以了


黄色远光灯让黄色光线通过,同时阻挡其他光线

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

我们可以使用一张示例图片来查看highlighter(微软的剪贴工具)对频道的效果:

原始图像

突出显示

颜色通道

因此,您需要做的是将
blue
值设置为零,无论您希望荧光灯出现在何处


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

黄色远光灯让黄色光线通过,同时阻挡其他光线

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

我们可以使用一张示例图片来查看highlighter(微软的剪贴工具)对频道的效果:

原始图像

突出显示

颜色通道

因此,您需要做的是将
blue
值设置为零,无论您希望荧光灯出现在何处


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

谢谢!使用
LockBits
在光标“下方”操纵RGB值就可以了。谢谢!使用
LockBits
在光标的“下方”操纵RGB值即可实现此功能。