<ctrl:uiPopup x:Name="canvas" VerticalOffset="-410" IsOpen="True" AllowsTransparency="True" PopupAnimation="Fade">
<Canvas Height="410" Width="548">
<Image x:Name="PanelLeft" Height="410" Width="45" Canvas.Left="0"></Image>
<Image x:Name="PanelTop" Height="45" Width="548" Canvas.Top="0"></Image>
<Image x:Name="PanelRight" Height="410" Width="45" Canvas.Right="0"></Image>
<Image x:Name="PanelBottom" Height="45" Width="548" Canvas.Bottom="0"></Image>
<Image x:Name="PanelPlus" Height="100" Width="100" Panel.ZIndex="1"></Image>
</Canvas>
</ctrl:uiPopup>
ctrl:uiPopup控件,参考: 自定义WPF Popup控件
//注册移动事件
PanelPlus.MouseLeftButtonDown += rectOne_MouseLeftButtonDown;
PanelPlus.MouseLeftButtonUp += rectOne_MouseLeftButtonUp;
PanelPlus.MouseMove += rectOne_MouseMove;
var cLeft = e.GetPosition(canvas).X - spanLeft;
var cTop = e.GetPosition(canvas).Y - spanTop;
//设置矩形的位置
Canvas.SetLeft(PanelPlus, cLeft);
Canvas.SetTop(PanelPlus, cTop);
//鼠标松开
private void rectOne_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
//释放鼠标捕获
PanelPlus.ReleaseMouseCapture();
enableMove = false;
//鼠标按下
private void rectOne_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
var y = Convert.ToDouble(e.GetPosition(canvas).Y);
y = Utils.IsNumber(y) ? y : 0;
var x = Convert.ToDouble(e.GetPosition(canvas).X);
x = Utils.IsNumber(x) ? x : 0;
//创建鼠标捕获
Mouse.Capture(PanelPlus);
double l = Convert.ToDouble(Canvas.GetLeft(PanelPlus));
l = Utils.IsNumber(l) ? l : 0;
double t = Convert.ToDouble(Canvas.GetTop(PanelPlus));
t = Utils.IsNumber(t) ? t : 0;
spanLeft = x - l;
spanTop = y - t;
enableMove = true;
if (str == null) return false;
ASCIIEncoding ascii = new ASCIIEncoding();
byte[] bytestr = ascii.GetBytes(str.ToString());
foreach (byte c in bytestr)
if (c < 48 || c > 57)
return false;
return true;
项目案例:WPF使用WindowsFormsHost播放视频,视频上显示边框、字幕等特效;难点问题1、WindowsFormsHost不支持背景透明;2、WPFPanel.ZIndex无效,WindowsFormsHost更优先;3、使用Show打开两个窗口,数据同步延时解决方案:使用Popup,解决最顶层、解决背景透明使用Canvas,解决元素拖拽XA...
1.添加System.Windows.Forms与WindowsFormsIntegration引用
在引用中分别添加System.Windows.Forms与WindowsFormsIntegration对象,如下图。
2.在XAML中增加引用对象的System.Windows.Forms的引用
引用命名空间设置为wf(xmlns:wf="clr-namespace:System.Window...
由于项目需求需要用到透明控件。但是,winform项目的控件透明都是将父控件的图像绘制成子控件的背景来实现的,这种透明存在很大的问题,不合格。
然后,我想到wpf在透明这块做的比较好,想是不是可以在winform中使用wpf控件来实现,结果发现还是走不通,由于elementhost控件是winform中的控件,而wpf控件必须要用它来承载才能在winform中实现,不合格。
最后,百度发现了...
目录介绍问题方案WindowsFormHost黑色不透明 与 窗口颜色叠加WindowsFormHost黑色 不透明 与 半透明窗口颜色不叠加WindowsFormHost 下的Winform控件半透明WindowsFormHost下的Winform控件半透明反差效果闪烁总结
在WPF中,如果你需要在WPF中使用Winform控件,你将需要使用WindowsFormsHost作为宿主,具体的原理是,WindowsFormsHost在当前的位置以及尺寸,在占用一块区域叠加Winform控件。这里具体可以
在WPF中想放置WinForm的控件时可通过WindowsFormsHost来承载WinForm控件,从而使其显示在WPF界面中。
通过这种方式放置的控件一直会显示在界面的最顶层,目前还没有办法将其放在WPF控件下面,此处有相关问题文章。
通过将WindowsFormsHost的Background设置为Transparent可透明显示出WindowsFormsHost底层的控件,但是设置为T...
可以使用Grid的Opacity属性来设置透明度,取值范围为到1之间,表示完全透明,1表示完全不透明。例如,设置Grid的透明度为.5,可以使用以下代码:
<Grid Opacity=".5">
<!-- Grid的内容 -->
</Grid>