WPF rectangle 拖动改变大小
时间: 2024-08-15 22:02:52 浏览: 16
WPF(Windows Presentation Foundation)中的Rectangle控件允许你在用户交互时拖动其边角来调整大小。要实现这种功能,你需要利用`MouseLeftButtonDown`、`MouseLeftButtonUp`和`MouseMove`事件,并结合一些几何变换知识。
首先,在XAML中创建Rectangle并添加`DragDelta`事件处理器:
```xml
<Rectangle x:Name="myRectangle"
Width="100" Height="50"
Background="Blue"
MouseLeftButtonDown="Rectangle_MouseLeftButtonDown"
MouseMove="Rectangle_MouseMove"
MouseLeftButtonUp="Rectangle_MouseLeftButtonUp">
</Rectangle>
```
然后,在后端的`.cs`文件中编写相应的事件处理方法:
```csharp
private Point initialPosition;
private Size initialSize;
private void Rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
initialPosition = e.GetPosition(myRectangle);
initialSize = myRectangle.Size;
}
private void Rectangle_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
var newPosition = e.GetPosition(myRectangle);
var deltaX = newPosition.X - initialPosition.X;
var deltaY = newPosition.Y - initialPosition.Y;
// 更新矩形的位置
myRectangle.Margin = new Thickness(deltaX, deltaY, 0, 0);
// 更新矩形的新尺寸
var newSize = initialSize + new Size(deltaX, deltaY);
myRectangle.Width = newSize.Width;
myRectangle.Height = newSize.Height;
}
}
private void Rectangle_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
initialPosition = null; // 结束拖动操作
}
```
在这个例子中,当用户按下左键开始拖动时,记录初始位置和大小;移动鼠标时,根据当前位置计算偏移量,并相应地更新矩形的位置和大小。松开左键时,停止拖动模式。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)