SilverLight鼠标绘制矩形
来源:互联网 发布:俯卧撑支架 知乎 编辑:程序博客网 时间:2024/05/24 00:43
技术要点:
1.Canvas控件布局用到的Canvas.TopProperty以及Canvas.LeftProperty属性
2.MouseLeftButtonDown,MouseMove,MouseLeftButtonUp方法处理程序的调用
VB.NET代码如下:
Private isAddMouseEvent As Boolean = False
Private rectangle As Rectangle
Private point As Point
Private Sub btnMain_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnMain.Click
If Not isAddMouseEvent Then
AddHandler canvasMain.MouseLeftButtonDown, AddressOf MouseEventDown
isAddMouseEvent = True
Me.btnMain.IsEnabled = False
End If
End Sub
Private Sub MouseEventDown(ByVal sender As Object, ByVal e As MouseEventArgs)
rectangle = New Rectangle()
point = e.GetPosition(canvasMain)
rectangle.SetValue(Canvas.LeftProperty, point.X)
rectangle.SetValue(Canvas.TopProperty, point.Y)
rectangle.Opacity = 1
rectangle.Fill = New SolidColorBrush(Colors.Blue)
rectangle.RadiusX = 10
rectangle.RadiusY = 10
AddHandler canvasMain.MouseMove, AddressOf MouseMove
AddHandler canvasMain.MouseLeftButtonUp, AddressOf MouseUp
canvasMain.Children.Add(rectangle)
End Sub
Private Sub MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
Dim tempPorint = e.GetPosition(canvasMain)
If tempPorint.X > point.X Then
rectangle.Width = tempPorint.X - point.X
End If
If tempPorint.X <= point.X Then
rectangle.SetValue(Canvas.LeftProperty, tempPorint.X)
rectangle.Width = point.X - tempPorint.X
End If
If tempPorint.Y > point.Y Then
rectangle.Height = tempPorint.Y - point.Y
End If
If tempPorint.Y <= point.Y Then
rectangle.Height = point.Y - tempPorint.Y
rectangle.SetValue(Canvas.TopProperty, tempPorint.Y)
End If
End Sub
Private Sub MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs)
RemoveHandler canvasMain.MouseLeftButtonUp, AddressOf MouseUp
RemoveHandler canvasMain.MouseMove, AddressOf MouseMove
RemoveHandler canvasMain.MouseLeftButtonDown, AddressOf MouseEventDown
isAddMouseEvent = False
btnMain.IsEnabled = True
End Sub
布局页面代码如下:
<Grid x:Name="LayoutRoot" Background="White">
<Canvas x:Name="canvasMain" Width="1000" Height="1000" Background="Black" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</Canvas>
<Button x:Name="btnMain" Width="90" Height="28" Content="点我开始绘制矩形" Margin="0 0 0 0" VerticalAlignment="Top" HorizontalAlignment="Left">
</Button>
</Grid>
- SilverLight鼠标绘制矩形
- 使用鼠标绘制矩形
- 鼠标绘制矩形
- 鼠标绘制矩形
- MFC 鼠标绘制矩形框
- winfrom-拖动鼠标绘制矩形
- OpenCV鼠标画图例程,鼠标绘制矩形
- OpenCV鼠标画图例程,鼠标绘制矩形
- OpenCV鼠标画图例程,鼠标绘制矩形
- Opencv中利用鼠标绘制矩形
- 鼠标在窗口中绘制矩形
- 用鼠标在窗口中绘制矩形
- OpenCV鼠标绘制矩形和截取图像的矩形区域
- opencv鼠标绘制矩形和截取图像的矩形区域
- 通过鼠标画一次性矩形 + 绘制半透膜矩形
- 精通Silverlight——12.6.2 动态绘制矩形示例
- JAVA鼠标屏幕绘制拖拽删除矩形
- 【OpenCV】通过鼠标在图像中绘制RotatedRect旋转矩形
- JAVA常用IO操作(转)
- 列空间与零空间
- 列空间与零空间
- VIM正则表达式的若干写法
- java中的io系统总结.(转)
- SilverLight鼠标绘制矩形
- UNIX 缩写风格
- 优秀的服务器模型
- 相等性、同一性 (Equals、ReferenceEquals、==区别)
- C和C++混编,c调用C++,c++调用C
- C#委托的同步调用和异步调用
- 使用XCopy /exclude发布2003的web系统
- ARM立即数,LDR和MOV的区别
- 文件上传下载——通过ahxu扩展后的组件DiskFileUploadEx上传单个excel