WPF 使用Microsoft.Ink 做的墨迹输入法

本文介绍了如何使用WPF结合Microsoft.Ink库来创建自定义的手写输入功能,不依赖InkCanvas,通过调整速度控制线条粗细,并通过PathGeometry处理笔画数据。展示了代码实现和效果。
摘要由CSDN通过智能技术生成

利用微软的Ink,实现手写输入。
不用自带的InkCanvas,重写的绘制的效果。
根据速度调节线条粗细了。其实不算是线条吧,PathGeometry对象。
然后再向Ink引擎传入笔画数据,其实就是点。上两张图



字写的不好看。来看看代码吧

主要代码:

Imports Microsoft.Ink
'Imports System.Windows.Ink

'C:\Program Files (x86)\Common Files\Microsoft Shared\Ink
'添加对 WPF 墨迹分析程序集、IAWinFX.dll、IACore.dll 和 IALoader.dll(这些内容可以在 \Program Files\Reference Assemblies\Microsoft\Tablet PC\v1.7 中找到)的引用。

Structure PointInfo
    Public pt As Point REM 点的位置
    Public dir As Vector REM 与上一个点之间的方向
    Public len As Single REM 上一个点到这个点的距离
    Public perpendicular As Vector REM 与上一个点之间的方向的垂直
    Public Function ToDrawingPoint() As System.Drawing.Point
        Return New System.Drawing.Point(pt.X, pt.Y)
    End Function
End Structure

Class MainWindow
    Private bmp As RenderTargetBitmap REM 渲染到的图片
    Private dv As New DrawingVisual() REM 绘制到图片的visual
    Private geo As PathGeometry REM 一笔 存的所有的path
    Private geos As New List(Of PathGeometry) REM 所有笔划
    Private ptStart As Point REM 起始点
    Private ptEnd As Point REM 终点
    Private ptinfos As New List(Of PointInfo) REM 点的信息

    REM 求垂直与输入向量的向量,顺时针,应该还有更好的写法吧
    Public Function Perpendicular(v As Vector) As Vector
        Dim result As Vector

        If v.Y = 0 And v.X = 1 Then
            Return New Vector(0, -1)
        ElseIf v.Y = 0 And v.X = -1
            Return New Vector(0, 1)
        Else
            If v.Y > 0 Then
                result.X = Math.Sqrt(v.Y * v.Y / (v.X * v.X + v.Y * v.Y))
            Else
                result.X = -Math.Sqrt(v.Y * v.Y / (v.X * v.X + v.Y * v.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值