Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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
C# c语言中的图像处理#_C#_Image Processing - Fatal编程技术网

C# c语言中的图像处理#

C# c语言中的图像处理#,c#,image-processing,C#,Image Processing,在提出问题之前,先想想photoshop。当你在图片上画一个矩形时,你可以移动它。当你移动它时,它工作得非常快,而且不会在图片上留下痕迹。 所以我的问题是,在c#应用程序中如何做到这一点 这可能对您有用 当您移动矩形时,Photoshop不会将其放入图像中然后绘制图像,而是在没有矩形的情况下绘制图像,并且在屏幕上绘制矩形。这样,当您移动矩形时,它可以重新绘制之前被矩形覆盖的图像部分,并在新位置绘制矩形。我想您是在询问文档图像顶部的选择矩形(或其他临时形状)。这种效果有时被称为“橡皮筋

在提出问题之前,先想想photoshop。当你在图片上画一个矩形时,你可以移动它。当你移动它时,它工作得非常快,而且不会在图片上留下痕迹。

所以我的问题是,在c#应用程序中如何做到这一点

这可能对您有用







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

我想您是在询问文档图像顶部的选择矩形(或其他临时形状)。这种效果有时被称为“橡皮筋”,特别是在从一个点到另一个点绘制直线时(它像橡皮筋一样拉伸)

传统上,这是通过使用XOR绘图来完成的——不是用选择形状覆盖图像,而是反转该区域中的颜色。然后,要删除选择,只需再次反转颜色,返回到相同的原始图像即可。如今,图形渲染速度足够快,通常不需要这些技巧;只需重新绘制窗口的该部分(不包括矩形)即可

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


我不熟悉C#的GUI功能(我知道您可能会使用不止一个GUI框架),但它可能有一个通常的结构,即在窗口中放置许多“小部件”、“视图”或“控件”(可能相互嵌套)。您只需在图像小部件的顶部放置一个大小合适的矩形小部件(具有坚实的边框和透明的背景),就可以创建一个简单的选择框(虽然不是最有效的选择框)。这可以让你的GUI框架为你进行适当的重画,这可能是一个很好的廉价的开始方式。

@namco:它目前没有回答你的答案,但是如果你阅读并学习它,你可以得到你的答案+1,因为它将OP指向一些研究材料,而不是直接给出答案