Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Windows Presentation Foundation (WPF) имеет функцию рукописного ввода, которая упрощает внедрение цифрового рукописного ввода в приложение.
Предпосылки
Чтобы использовать следующие примеры, сначала установите Visual Studio. Он также помогает узнать, как писать базовые приложения WPF. Сведения о начале работы с WPF см. в пошаговом руководстве: Мое первое классическое приложение WPF.
Краткое руководство
В этом разделе описано, как создать простое приложение WPF, которое собирает чернила.
У вас есть чернила?
Чтобы создать приложение WPF, которое поддерживает рукописный ввод:
Откройте Visual Studio.
Создайте приложение WPF.
В диалоговом окне "Новый проект" разверните категорию Установленные>Visual C# или Visual Basic>Windows Desktop. Затем выберите шаблон приложения WPF App (.NET Framework ). Введите имя и нажмите кнопку "ОК".
Visual Studio создает проект, а MainWindow.xaml открывается в конструкторе.
Введите
<InkCanvas/>
между<Grid>
тегами.Нажмите клавишу F5 , чтобы запустить приложение в отладчике.
Используя перо или мышь, напишите в окне 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 создает фон градиентной кисти на поверхности рукописного ввода.
Добавление кода для XAML
Хотя XAML упрощает проектирование пользовательского интерфейса, любое реальное приложение должно добавить код для обработки событий. Вот простой пример, который увеличивает чернила в ответ на щелчок правой кнопкой мыши.
MouseRightButtonUp
Задайте обработчик в XAML:<InkCanvas Name="myInkCanvas" MouseRightButtonUp="RightMouseUpHandler">
В Обозревателе решений разверните 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
Запустите приложение. Добавьте чернила, а затем щелкните правой кнопкой мыши или выполните эквивалент нажатия и удержания стилусом.
Отображение увеличивается при каждом нажатии правой кнопки мыши.
Использование процедурного кода вместо XAML
Доступ ко всем функциям WPF можно получить из процедурного кода. Выполните следующие действия, чтобы создать приложение Hello Ink World для WPF, которое вообще не использует XAML.
Создайте проект консольного приложения в Visual Studio.
В диалоговом окне "Новый проект" разверните категорию Установленные>Visual C# или Visual Basic>Windows Desktop. Затем выберите шаблон Console App (.NET Framework). Введите имя и нажмите кнопку "ОК".
Вставьте следующий код в файл 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
Добавьте ссылки на сборки PresentationCore, PresentationFramework и WindowsBase, щелкнув правой кнопкой мыши ссылки в обозревателе решений и выбрав "Добавить ссылку".
Создайте приложение, нажав клавишу F5.
См. также
.NET Desktop feedback