Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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# 将WPF中的图像覆盖在Winforms控件上_C#_Wpf_Winforms - Fatal编程技术网

C# 将WPF中的图像覆盖在Winforms控件上

C# 将WPF中的图像覆盖在Winforms控件上,c#,wpf,winforms,C#,Wpf,Winforms,我希望能够在WinForms控件的顶部覆盖一个图像,该图像在它所属的面板中应该是可移动和可伸缩的,并且在WPF中。 我已经很容易地在WPF中实现了可移动/可伸缩的运行时映像。我还决定将WinForms控件导入WPF控件以尝试进行覆盖,但是,它似乎只显示WinForms控件,顶部没有覆盖图像(不透明度为50%)。 我正在使用的系统的其余部分是WinForms,我试图覆盖的WinForms控件是一个相当大的控件,我不希望为了完成此任务而将其转换为WPF。 有没有人知道最好的方法?基本上,图像本身与控

我希望能够在WinForms控件的顶部覆盖一个图像,该图像在它所属的面板中应该是可移动和可伸缩的,并且在WPF中。 我已经很容易地在WPF中实现了可移动/可伸缩的运行时映像。我还决定将WinForms控件导入WPF控件以尝试进行覆盖,但是,它似乎只显示WinForms控件,顶部没有覆盖图像(不透明度为50%)。 我正在使用的系统的其余部分是WinForms,我试图覆盖的WinForms控件是一个相当大的控件,我不希望为了完成此任务而将其转换为WPF。 有没有人知道最好的方法?基本上,图像本身与控件相关,用户会将图像的部分(因此调整大小和移动)与控件的部分对齐。
感谢您抽出时间来执行此操作,您需要将WPF usercontrol(带有覆盖的图像)放在控件中宿主的WPF usercontrol中。

使用将(隐藏的)WPF元素渲染为图像,并使用GDI在windows窗体内容的顶部绘制图像。

最后,要完成此操作,我使用了一个与Gusdor提到的类似的建议。我没有使用DrawToBitmap函数,而是将我希望看到的从控件呈现到图元文件,然后在WPF控件中呈现图元文件。这一切都很有效,解决了这个不寻常的问题。多亏了这些帮助

这行得通吗?),我一直认为在使用WindowsFormsHost时GDI是在WPF之上渲染的,我可能是错的,所以不要让我这么认为;)我试过这么做,但没用。它只显示WinForms控件,我不再看到WPF控件。如果我知道您已经尝试了此操作,我不会建议将其作为答案。我已尝试将WinForms控件放在面板上,位于承载要覆盖的WPF映像的ElementHost控件后面。这只显示WPF控件,而不显示Winforms控件。然后我尝试了更复杂的方法,将Winforms控件加载到WPF usercontrol中,并尝试以这种方式覆盖图像,但这样做时,Winforms控件基本上始终位于顶部,我再也看不到图像。有什么想法吗?不确定我是否需要对这个解释作进一步的阐述。我的WPF控件中的图像需要交互,它仍然需要作为控件进行操作。我需要能够移动和调整画布内的图像大小,甚至可能在将来旋转和扭曲图像。它需要有一定程度的不透明度,以便我可以将其移动到Winforms控件的目标控件上进行对齐。我不确定用你描述的我能做到这一点。最简单的解决方案就是找出为什么我不能使ElementHost完全透明,或者WPF控件上的画布对WinForms透明windows窗体的问题是任何控件之间都不支持透明。这就是为什么你在挣扎。我唯一的其他建议是捕获覆盖图像上的输入并将其转发到隐藏的wpf元素。也许在winforms控件上悬停一个完全独立的wpf窗口(用来承载wpf覆盖内容)最有效。唯一面临的问题将是同步的立场,我认为这将是微不足道的。考虑一个不可见的窗口来启动你的-> OK,如果我只想在WPF控件上手动呈现WiFrm控件,那我该怎么做呢?基本上,我如何从WPF控件传递某种图形上下文以供Winforms渲染,并让WPF控件继续正常工作?您可以将控件渲染为位图()并将位图传递给WPF