实现鼠标手写板(.Net)
2015-11-11 00:33
459 查看
本文是一个实现手写板的简单小示例,当鼠标按下时开始写字,鼠标松开时停止写字。
原理非常简单,当触发MouseDown事件时记录起始坐标startPoint,随着鼠标的移动触发MouseMove事件,记录当前坐标currentPoint,并以startPoint和currentPoint两点画直线,刷新startPoint的坐标。
实现代码如下:
Public Class Form1
Private graphics As Graphics
Private startPoint As Point
Private currentPoint As Point
Private flagDraw As Boolean
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
graphics = Me.CreateGraphics
End Sub
Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown
startPoint = e.Location
flagDraw = True
End Sub
Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
If flagDraw Then
currentPoint = e.Location
graphics.DrawLine(New Pen(Brushes.Black), startPoint, currentPoint)
startPoint = currentPoint
End If
End Sub
Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp
flagDraw = False
End Sub
End Class
原理非常简单,当触发MouseDown事件时记录起始坐标startPoint,随着鼠标的移动触发MouseMove事件,记录当前坐标currentPoint,并以startPoint和currentPoint两点画直线,刷新startPoint的坐标。
实现代码如下:
Public Class Form1
Private graphics As Graphics
Private startPoint As Point
Private currentPoint As Point
Private flagDraw As Boolean
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
graphics = Me.CreateGraphics
End Sub
Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown
startPoint = e.Location
flagDraw = True
End Sub
Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
If flagDraw Then
currentPoint = e.Location
graphics.DrawLine(New Pen(Brushes.Black), startPoint, currentPoint)
startPoint = currentPoint
End If
End Sub
Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp
flagDraw = False
End Sub
End Class
相关文章推荐
- SAP 数据复制工具
- poj 2154 Color polya计数+欧拉优化
- Leetcode -- Single Number II
- 图片高斯模糊
- LeetCode -- Set Matrix Zeroes
- Android中Canvas绘图基础详解(附源码下载)
- Node Security
- Hibernate(二)——POJO对象的操作
- Node Security
- struts2读常量顺序
- 3D数学基础:图形与游戏开发_读书笔记01
- LeetCode -- Remove Invalid Parentheses
- Nexus私服使Maven更加强大
- LeetCode -- Container With Most Water
- ARM中关于绝对寻址相对寻址LDR,ADR的理解
- android基础---Activity和Intent
- spring数据源配置
- 苹果vs谷歌:与微软的战争教会了苹果什么
- 苹果vs谷歌:与微软的战争教会了苹果什么
- JAVA多线程和并发基础面试问答(转载)