Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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#_.net_Image Manipulation - Fatal编程技术网

C# C语言中的图像与几何#

C# C语言中的图像与几何#,c#,.net,image-manipulation,C#,.net,Image Manipulation,我正在开发一个加载图像的应用程序,然后我必须用鼠标在图像上方标记一些点。这些点应该在一个单独的层上,即我不想修改图像数据 这样做的最佳方式是什么?我曾想过使用directX,但我发现它有点过时。GDI+解决了吗 提前感谢我认为WPF有用于图像处理的som选项。与它一起工作应该比直接与directX交谈舒服得多 这篇文章可能会给你一些提示(除非我完全误解了你的意思) 我认为WPF有用于图像处理的som选项。与它一起工作应该比直接与directX交谈舒服得多 这篇文章可能会给你一些提示(除非我完全误

我正在开发一个加载图像的应用程序,然后我必须用鼠标在图像上方标记一些点。这些点应该在一个单独的层上,即我不想修改图像数据

这样做的最佳方式是什么?我曾想过使用directX,但我发现它有点过时。GDI+解决了吗


提前感谢

我认为WPF有用于图像处理的som选项。与它一起工作应该比直接与directX交谈舒服得多

这篇文章可能会给你一些提示(除非我完全误解了你的意思)


我认为WPF有用于图像处理的som选项。与它一起工作应该比直接与directX交谈舒服得多

这篇文章可能会给你一些提示(除非我完全误解了你的意思)


DirectX将是一种过度使用,您应该使用GDI+(又名System.Drawing)。

DirectX将是一种过度使用,您应该使用GDI+(又名System.Drawing)。

使用BackgroundImage作为主要层(在窗体上使用PaintBackground override)
和OnPaint用您的点覆盖“主”层。

使用BackgroundImage作为主层(表单上的OnPaint背景覆盖) OnPaint会用你的点覆盖“主”层。

这个怎么样

<Border>
    <Border.Background>
        <ImageBrush ImageSource="foo.jpg" />
    </Border.Background>
    <Canvas Background="Transparent"/>
</Border>
然后,您只需将图像加载到边框。背面用ImageBrush包裹。

这个怎么样

<Border>
    <Border.Background>
        <ImageBrush ImageSource="foo.jpg" />
    </Border.Background>
    <Canvas Background="Transparent"/>
</Border>

然后,您只需将图像加载到边框。用ImageBrush将背景图像包起来。

是的,GDI+就足够了。您只需拥有两张图像:

  • 其中一个将包含背景信息,且为“只读”
  • 另一个没有背景,只包含你画的点
您只需在另一个图像上绘制一个图像,然后将结果显示给用户(注意使用双缓冲)

不过,我建议不要将点存储在单独的图像中,而是存储在单独的列表中,因为以后可能需要对它们进行一些处理。因此,假设您正在使用缓冲区图像,您需要在缓冲区图像上绘制背景,然后从列表中绘制点,然后将结果显示给用户


如果需要的话,我会考虑在缓存方面为点添加额外的图像。

是的,GDI+就足够了。您只需拥有两张图像:

  • 其中一个将包含背景信息,且为“只读”
  • 另一个没有背景,只包含你画的点
您只需在另一个图像上绘制一个图像,然后将结果显示给用户(注意使用双缓冲)

不过,我建议不要将点存储在单独的图像中,而是存储在单独的列表中,因为以后可能需要对它们进行一些处理。因此,假设您正在使用缓冲区图像,您需要在缓冲区图像上绘制背景,然后从列表中绘制点,然后将结果显示给用户

如果需要的话,我会考虑仅在缓存方面为点添加图像。

我认为他的意思是“过度使用”而不是“过时”。我们是否假设“最终结果”是一个位图(或两个位图)?我想知道您是否希望将创建的标记(点)的位置存储在数据结构中以供将来使用(如编辑),并在某种覆盖上进行渲染?所需解决方案的范围、复杂性:让用户从工具栏图标拖放小图标(图片框或?)没有什么错。。。如果你处理的是少量离散的“标记”,而不是由花哨的线条连接。您可以使用屏幕捕获方法创建复合位图。看看谷歌地图上的图钉是怎么做的。我想他的意思是“过度杀戮”而不是“过时”。我们是否假设“最终结果”是一个位图(或两个位图)?我想知道您是否希望将创建的标记(点)的位置存储在数据结构中以供将来使用(如编辑),并在某种覆盖上进行渲染?所需解决方案的范围、复杂性:让用户从工具栏图标拖放小图标(图片框或?)没有什么错。。。如果你处理的是少量离散的“标记”,而不是由花哨的线条连接。您可以使用屏幕捕获方法创建复合位图。看看谷歌地图上的图钉是怎么做的。