c#中的图像处理

本文关键字:图像处理 | 更新日期: 2023-09-27 18:04:44

在提问之前想想例如photoshop。当你在图片上画一个矩形时。你可以移动它。当你移动时,它工作得非常快,它不会在图片上留下一些痕迹。
所以我的问题是,如何在c#应用程序中做到这一点?

c#中的图像处理

这可能对你有用

使用c#和GDI+进行假人图像处理第1部分-每像素过滤器
使用c#和GDI+的假人图像处理第2部分-卷积滤波器
使用c#和GDI+的假人图像处理第3部分-边缘检测滤波器
使用c#和GDI+进行假人图像处理第4部分-双线性滤波器和调整大小
使用c#和GDI+的假人图像处理第5部分-位移过滤器,包括漩涡
用c#和GDI+处理假人图像第6部分- HSL色彩空间

当你移动矩形时,Photoshop不会把它放在图像中,然后再绘制图像,而是在没有矩形的情况下绘制图像,矩形被绘制在屏幕上的矩形之上。这样,当您移动矩形时,它可以重新绘制先前被矩形覆盖的图像部分,并在新位置绘制矩形。

我想你是在问文档图像顶部的选择矩形(或其他临时形状)。这种效应有时被称为"橡皮筋",特别是当从一点到另一点画一条线时(它像橡皮筋一样伸展)。

传统上,这是通过使用异或绘图来完成的——而不是用选择形状覆盖图像,该区域的颜色是颠倒的。然后,为了删除选区,它足以再次反转颜色,返回到相同的原始图像。如今,图形渲染的速度已经足够快,通常不需要这样的技巧;只需重新绘制窗口的那一部分(不包括矩形)就足够了。

无论哪种方式,重要的是要认识到文档图像-用户正在编辑的图像-与窗口图像不同,后者只是在必要时重新制作的副本。在窗口中,绘制文档图像,然后在其上绘制选择、引导标记和其他此类控件。

我不熟悉c#的GUI工具(我知道你可能会使用不止一个GUI框架),但它可能有通常的结构,在窗口中放置许多"小部件","视图"或"控件"(可能彼此嵌套)。您可以通过在图像小部件的顶部放置一个大小合适的矩形小部件(具有实边框和透明背景)来创建一个简单的选择框——尽管不是最有效的选择框。这让您的GUI框架为您照顾适当的重绘,并且可能是一个很便宜的开始方式。