我有一个自定义的WinForms控件,可以显示一些图形。我需要在此控件之上叠加InkCanvas
。 InkCanvas
应该是“透视”(透明背景,可见墨水)。此InkCanvas
允许用户在显示的图形上绘制草图。
我知道WPF / WinForms互操作中的空域问题(在WPF窗口中托管的WinForms元素将始终位于所有其他组件之上)。所以很明显我无法在WPF中达到预期的效果。我决定以相反的方式解决问题(在WinForms表单中托管InkCanvas
并在我的自定义控件上覆盖InkCanvas
。
问题是WinForms ElementHost
无法“透视”(无法设置透明度)。我尝试使用以下覆盖
protected override CreateParams CreateParams
{
get
{
const int WS_EX_TRANSPARENT = 0x20;
CreateParams cp = base.CreateParams;
cp.ExStyle = cp.ExStyle | WS_EX_TRANSPARENT;
return cp;
}
}
但这会使整个事物完全透明(草图不再可见)。
如何在WinForms控件上覆盖可见墨水的“透视”InkCanvas
?
答案 0 :(得分:0)
基于评论和缺乏答案,我们可以安全地假设我想要做的事情是不可能的,除非我们做了@Hans Passant提到的“窗口分层”黑客。