首页 / C# / 使用鼠标WPF C#移动图像
使用鼠标WPF C#移动图像
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用鼠标WPF C#移动图像,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1763字,纯文字阅读大概需要3分钟。
内容图文
![使用鼠标WPF C#移动图像](/upload/InfoBanner/zyjiaocheng/664/42d9dd58d23340d3b85cf90870294ddf.jpg)
Hello, I have been trying to work this problem out for some time now,
I hope that you are able to lead me in the right direction!
我的目标是在我的wpf游戏中具有“手电筒”效果,为此,我追求了2个主要选择.
>具有宽度为200%的黑色png图像.中间有孔的窗口高度,然后用鼠标移动图像
>具有窗口大小的黑色图像,并具有一个不透明蒙版元素,该元素是一个圆形的形状,从黑色层一直到下面的内容.该圆圈随鼠标移动.
我无法使用这两个选项中的任何一个,在wpf中,当您具有不透明蒙版时,似乎无法移动“穿过”图层的元素.对于大图像方法,我无法将鼠标Point对象转换为图像的位置.以下是一些获取鼠标位置的潜在方法,我无法将图像移动到“指向”位置.
指向屏幕
private void MouseCordinateMethod(object sender, MouseEventArgs e)
{
var relativePosition = e.GetPosition(this);
var point= PointToScreen(relativePosition);
_x.HorizontalOffset = point.X;
_x.VerticalOffset = point.Y;
}
获取位置
var point = e.GetPosition(this.YourControl);
最终的游戏将使用kinect作为控件,因此,如果有某种方法可以使用kinect库或本地实现,那也是一种选择.谢谢.
解决方法:
您可以将Path元素与CombinedGeometry一起使用,其中CombinedGeometry由非常大的RectangleGeometry和排除的(因此也是透明的)EllipseGeometry组成,可通过在鼠标输入时更改其Center属性来移动它:
<Grid MouseMove="Grid_MouseMove">
<TextBlock Text="Hello, World" FontSize="40"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Path Fill="Black">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1>
<RectangleGeometry Rect="0,0,10000,10000"/>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry x:Name="circle" RadiusX="100" RadiusY="100"/>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</Grid>
MouseMove处理程序:
private void Grid_MouseMove(object sender, MouseEventArgs e)
{
circle.Center = e.GetPosition((IInputElement)sender);
}
内容总结
以上是互联网集市为您收集整理的使用鼠标WPF C#移动图像全部内容,希望文章能够帮你解决使用鼠标WPF C#移动图像所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。