用WPF的Polyline做十字线(橡皮筋),需要在xaml里加个另外的控件才能显示

梁子哥 2018-09-08 08:38:28
如果不加那个 <TextBlock />就一片空白,想不明白什么原理,求老师讲解

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}

#region API方式取鼠标坐标
[StructLayout(LayoutKind.Sequential)]
public struct MyPoint
{
public int X;
public int Y;

public MyPoint(int x, int y)
{
this.X = x;
this.Y = y;
}
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool GetCursorPos(out MyPoint pt);
#endregion


private void Grid_MouseMove(object sender, MouseEventArgs e)
{
MyPoint myPoint = new MyPoint();
GetCursorPos(out myPoint);
Point userPoint = this.PointFromScreen(new Point(myPoint.X, myPoint.Y));

PointCollection points = new PointCollection();
points.Add(new Point(0, userPoint.Y));
points.Add(new Point(MyGd.ActualWidth, userPoint.Y));
points.Add(new Point(userPoint.X, userPoint.Y));
points.Add(new Point(userPoint.X, 0));
points.Add(new Point(userPoint.X, MyGd.ActualHeight));

Pl1.Points = points;
Pl1.StrokeThickness = 1;
Pl1.Stroke = new SolidColorBrush(Colors.Black);
}
}


<Window x:Class="简单橡皮筋.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:简单橡皮筋"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid x:Name="MyGd" MouseMove="Grid_MouseMove">
<Polyline x:Name="Pl1"/>
<TextBlock />
</Grid>
</Window>
...全文
441 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
E次奥 2018-09-13
  • 打赏
  • 举报
回复
是不是因为没有背景色导致的,尝试设置Grid背景色看看;
梁子哥 2018-09-08
  • 打赏
  • 举报
回复
刚测试的,如果在外层嵌套一个PANEL则十字光标会非常的卡顿


<StackPanel>
<Polyline x:Name="Pl1"/>
<TextBlock />
</StackPanel>

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧