c# - 绘制矩形 C# WPF 后如何从特定角更新此值
问题描述
我想在第一次从矩形的任何角落或中间绘制后调整矩形的大小。我正在使用Geometry从下面的代码中绘制矩形。
private void UpdateMask(Point p)
{
double left = Math.Min(origin.X, p.X);
double right = Math.Max(origin.X, p.X);
double top = Math.Min(origin.Y, p.Y);
double bottom = Math.Max(origin.Y, p.Y);
rUpar = new Rect(0, 0, panel.ActualWidth, panel.ActualHeight);
rNichy = new Rect(left, top, right - left, bottom - top);
mask.Data = new CombinedGeometry(GeometryCombineMode.Exclude,
new RectangleGeometry(rUpar),
new RectangleGeometry(rNichy));
}
private void PanelMouseMove(object sender, MouseEventArgs e)
{
UpdateMask(e.GetPosition(panel));
var pos = e.GetPosition(panel); // Panel is Grid
x = Math.Min(pos.X, origin.X);
y = Math.Min(pos.Y, origin.Y);
var w = Math.Max(pos.X, origin.X) - x;
var h = Math.Max(pos.Y, origin.Y) - y;
}
private void PanelMouseDown(object sender, MouseButtonEventArgs e)
{ panel.CaptureMouse();
origin = e.GetPosition(panel);
UpdateMask(origin);
}
private void PanelMouseUp(object sender, MouseButtonEventArgs e)
{
panel.ReleaseMouseCapture();
}
WPF:-
<Grid>
<Canvas x:Name="panel" MouseDown="PanelMouseDown" MouseUp="PanelMouseUp" MouseMove="PanelMouseMove">
<Image Name="img" Source="..." />
<Path x:Name="mask" Fill="#99271F1F" />
</Canvas>
</Grid>
我从中得出的是:- 任何更新几何以调整大小的方法或任何其他方法。
解决方案
推荐阅读
- coldfusion - 从 Coldfusion 9 升级到 Coldfusion 2021
- mysql - 如何*有效地*获得*标准* SQL 中每组行的评分最高的行?
- python - Jupyter Notebook:在 /home 和/或隐藏文件之外编辑文件 - 解决方法
- reactjs - React Native Custom Hook call with Parameter Invalid Hook Call
- php - 如何重构这个功能?
- python - numpy shuffle 一部分子数组
- c# - 如何自己编写LINQ操作?
- c++ - CUDA 内核的奇怪行为
- python - 可以在没有通过字段的情况下创建 ManyToMany 吗?
- html - Visual Studio 2019 - cshtml colo 格式化