Začínáme s rukopisem ve WPF

Windows Presentation Foundation (WPF) má funkci rukopisu, která usnadňuje začlenění digitálního rukopisu do aplikace.

Předpoklady

Pokud chcete použít následující příklady, nejprve nainstalujte Sadu Visual Studio. Pomáhá také vědět, jak psát základní aplikace WPF. Nápovědu k zahájení práce s WPF najdete v tématu Návod: Moje první desktopová aplikace WPF.

Rychlé spuštění

Tato část vám pomůže napsat jednoduchou aplikaci WPF, která shromažďuje rukopis.

Máte rukopis?

Vytvoření aplikace WPF, která podporuje rukopis:

  1. Otevřete sadu Visual Studio.

  2. Vytvořte novou aplikaci WPF.

    V dialogovém okně Nový projekt rozbalte kategorii Nainstalovaná aplikace>Visual C# nebo Visual Basic>Windows Desktop. Pak vyberte šablonu aplikace WPF (.NET Framework). Zadejte název a pak vyberte OK.

    Visual Studio vytvoří projekt a v návrháři se otevře MainWindow.xaml .

  3. Zadejte <InkCanvas/> mezi značky <Grid> .

    XAML designer with InkCanvas tag

  4. Stisknutím klávesy F5 spusťte aplikaci v ladicím programu.

  5. Pomocí pera nebo myši napište do okna hello world .

Napsali jste rukopisný ekvivalent aplikace "hello world" pouze s 12 klávesovými úhozy!

Ochutněte svou aplikaci

Pojďme využít některé funkce WPF. Nahraďte všechno mezi levou a pravou <značkou Okna> následujícím kódem:

<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>

Tento XAML vytvoří pozadí přechodového štětce na povrchu rukopisu.

Gradient colors on inking surface in WPF app

Přidání kódu za XAML

I když XAML usnadňuje návrh uživatelského rozhraní, každá skutečná aplikace potřebuje přidat kód pro zpracování událostí. Tady je jednoduchý příklad, který se přiblíží rukopisu v reakci na kliknutí pravým tlačítkem myši.

  1. Nastavte obslužnou rutinu MouseRightButtonUp v XAML:

    <InkCanvas Name="myInkCanvas" MouseRightButtonUp="RightMouseUpHandler">
    
  2. V Průzkumník řešení rozbalte MainWindow.xaml a otevřete soubor s kódem (MainWindow.xaml.cs nebo MainWindow.xaml.vb). Přidejte následující kód obslužné rutiny události:

    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. Aplikaci spusťte. Přidejte nějaký rukopis a potom klikněte pravým tlačítkem myši nebo proveďte ekvivalent stisknutí a podržení perem.

    Zobrazení se při každém kliknutí pravým tlačítkem myši přibližuje.

Použití procedurálního kódu místo XAML

Ke všem funkcím WPF můžete přistupovat z procedurálního kódu. Tímto postupem vytvoříte aplikaci Hello Ink World pro WPF, která vůbec nepoužívá xaml.

  1. Vytvořte nový projekt konzolové aplikace v sadě Visual Studio.

    V dialogovém okně Nový projekt rozbalte kategorii Nainstalovaná aplikace>Visual C# nebo Visual Basic>Windows Desktop. Pak vyberte šablonu aplikace konzoly (.NET Framework). Zadejte název a pak vyberte OK.

  2. Do souboru Program.cs nebo Program.vb vložte následující kód:

    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. Přidejte odkazy na sestavení PresentationCore, PresentationFramework a WindowsBase tak, že kliknete pravým tlačítkem myši na Odkazy v Průzkumník řešení a zvolíte Přidat odkaz.

    Reference Manager showing PresentationCore and PresentationFramework

  4. Sestavte aplikaci stisknutím klávesy F5.

Viz také