Поделиться через


Начните работу с рукописным вводом в WPF

Windows Presentation Foundation (WPF) имеет функцию рукописного ввода, которая упрощает внедрение цифрового рукописного ввода в приложение.

Предпосылки

Чтобы использовать следующие примеры, сначала установите Visual Studio. Он также помогает узнать, как писать базовые приложения WPF. Сведения о начале работы с WPF см. в пошаговом руководстве: Мое первое классическое приложение WPF.

Краткое руководство

В этом разделе описано, как создать простое приложение WPF, которое собирает чернила.

У вас есть чернила?

Чтобы создать приложение WPF, которое поддерживает рукописный ввод:

  1. Откройте Visual Studio.

  2. Создайте приложение WPF.

    В диалоговом окне "Новый проект" разверните категорию Установленные>Visual C# или Visual Basic>Windows Desktop. Затем выберите шаблон приложения WPF App (.NET Framework ). Введите имя и нажмите кнопку "ОК".

    Visual Studio создает проект, а MainWindow.xaml открывается в конструкторе.

  3. Введите <InkCanvas/> между <Grid> тегами.

    Конструктор XAML с тегом InkCanvas

  4. Нажмите клавишу F5 , чтобы запустить приложение в отладчике.

  5. Используя перо или мышь, напишите в окне hello world .

Вы написали рукописный эквивалент приложения hello world с только 12 нажатиями клавиш!

Додайте изюминку вашему приложению

Давайте воспользуемся некоторыми функциями WPF. Замените все между открывающим и закрывающим <тегами окна> следующим разметкой:

<Page>
  <InkCanvas Name="myInkCanvas" MouseRightButtonUp="RightMouseUpHandler">
    <InkCanvas.Background>
      <LinearGradientBrush>
        <GradientStop Color="Yellow" Offset="0.0" />
          <GradientStop Color="Blue" Offset="0.5" />
            <GradientStop Color="HotPink" Offset="1.0" />
              </LinearGradientBrush>
    </InkCanvas.Background>
  </InkCanvas>
</Page>

Этот XAML создает фон градиентной кисти на поверхности рукописного ввода.

Градиентные цвета на поверхности для нанесения чернил в приложении WPF

Добавление кода для XAML

Хотя XAML упрощает проектирование пользовательского интерфейса, любое реальное приложение должно добавить код для обработки событий. Вот простой пример, который увеличивает чернила в ответ на щелчок правой кнопкой мыши.

  1. MouseRightButtonUp Задайте обработчик в XAML:

    <InkCanvas Name="myInkCanvas" MouseRightButtonUp="RightMouseUpHandler">
    
  2. В Обозревателе решений разверните MainWindow.xaml и откройте соответствующий файл кода (MainWindow.xaml.cs или MainWindow.xaml.vb). Добавьте следующий код обработчика событий:

    private void RightMouseUpHandler(object sender,
                                     System.Windows.Input.MouseButtonEventArgs e)
    {
        Matrix m = new Matrix();
        m.Scale(1.1d, 1.1d);
        ((InkCanvas)sender).Strokes.Transform(m, true);
    }
    
    Private Sub RightMouseUpHandler(ByVal sender As Object, _
                                    ByVal e As System.Windows.Input.MouseButtonEventArgs)
    
        Dim m As New Matrix()
        m.Scale(1.1, 1.1)
        CType(sender, InkCanvas).Strokes.Transform(m, True)
    
    End Sub
    
  3. Запустите приложение. Добавьте чернила, а затем щелкните правой кнопкой мыши или выполните эквивалент нажатия и удержания стилусом.

    Отображение увеличивается при каждом нажатии правой кнопки мыши.

Использование процедурного кода вместо XAML

Доступ ко всем функциям WPF можно получить из процедурного кода. Выполните следующие действия, чтобы создать приложение Hello Ink World для WPF, которое вообще не использует XAML.

  1. Создайте проект консольного приложения в Visual Studio.

    В диалоговом окне "Новый проект" разверните категорию Установленные>Visual C# или Visual Basic>Windows Desktop. Затем выберите шаблон Console App (.NET Framework). Введите имя и нажмите кнопку "ОК".

  2. Вставьте следующий код в файл Program.cs или Program.vb:

    using System;
    using System.Windows;
    using System.Windows.Controls;
    class Program : Application
    {
        Window win;
        InkCanvas ic;
    
        protected override void OnStartup(StartupEventArgs args)
        {
            base.OnStartup(args);
            win = new Window();
            ic = new InkCanvas();
            win.Content = ic;
            win.Show();
        }
    
        [STAThread]
        static void Main(string[] args)
        {
            new Program().Run();
        }
    }
    
    Imports System.Windows
    Imports System.Windows.Controls
    
    
    Class Program
        Inherits Application
        Private win As Window
        Private ic As InkCanvas
    
    
        Protected Overrides Sub OnStartup(ByVal args As StartupEventArgs)
            MyBase.OnStartup(args)
            win = New Window()
            ic = New InkCanvas()
            win.Content = ic
            win.Show()
    
        End Sub
    
    End Class
    
    Module Module1
    
        Sub Main()
            Dim prog As New Program()
            prog.Run()
    
        End Sub
    
    End Module
    
  3. Добавьте ссылки на сборки PresentationCore, PresentationFramework и WindowsBase, щелкнув правой кнопкой мыши ссылки в обозревателе решений и выбрав "Добавить ссылку".

    Менеджер ссылок, отображающий PresentationCore и PresentationFramework

  4. Создайте приложение, нажав клавишу F5.

См. также