共用方式為


筆墨入門

更新:2007 年 11 月

將數位筆墨加入應用程式要比以往更加簡單。筆墨的演進發展對於 COM 和 Windows Forms 程式設計的方法,是達成與 WPF 完全整合的必要關鍵。您不一定要安裝個別的 SDK 或執行階段程式庫。

必要條件

您必須先安裝 Microsoft Visual Studio 2005 和 Windows SDK,才能使用下列範例。也應該瞭解如何撰寫 WPF 的應用程式。如需開始使用 WPF 的詳細資訊,請參閱 Windows Presentation Foundation 使用者入門

快速入門

本節會協助您撰寫收集筆墨的簡單 WPF 應用程式。

如果您尚未安裝 Microsoft Visual Studio 2005 和 Windows Software Development Kit (SDK),請立即進行安裝。WPF 應用程式通常必須經過編譯,您才可以進行檢視,即使應用程式包含整個可延伸標記語言 (XAML) 亦然。但是,Windows Software Development Kit (SDK) 包含應用程式 XamlPad,XamlPad 是專為加入實作以 XAML 為基礎之 UI 的處理速度而設計的。您可以使用該應用程式,來檢視和修補本文件前幾個範例。從 XAML 建立已編譯應用程式的程序涵蓋在本文件稍後的部分。

若要啟動 XAMLPad,按一下 [開始] 功能表,依序指向 [所有程式]、[Microsoft Winndows SDK] 和 [工具],然後按一下 [XAMLPad]。在呈現窗格中,XAMLPad 會呈現在程式碼窗格中寫入的 XAML 程式碼。您可以編輯 XAML 程式碼,所做變更會立即顯示在呈現窗格中。

取得筆墨

若要啟動您第一個支援筆墨的 WPF 應用程式:

  1. 開啟 Microsoft Visual Studio 2005

  2. 建立新的 [Windows Application (WPF)]

  3. 在 <Grid> 標籤之間輸入 <InkCanvas/>

  4. 按下 F5 在偵錯工具中啟動應用程式

  5. 使用手寫筆或滑鼠,在視窗中寫入 hello world

您只用了 12 個按鍵,就寫入相當於 "hello world" 應用程式的筆墨!

為應用程式增添樂趣

讓我們利用 WPF 的某些功能。將開始 <Window> 和結束 </Window> 標籤之間的所有內容取代為下列標記,即可在筆墨表面上取得漸層筆刷背景。

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


...


</Page>

使用動畫

讓我們將漸層筆刷的色彩變成動畫,增添更多樂趣。將下列 XAML 加入至結束 </InkCanvas> 標籤之後,結束 </Page> 標籤之前。

<Page.Triggers>
  <EventTrigger RoutedEvent="Page.Loaded">
    <EventTrigger.Actions>
      <BeginStoryboard>
        <Storyboard RepeatBehavior="Forever" AutoReverse="True">
          <ColorAnimation  Storyboard.TargetName="myInkCanvas"
          Storyboard.TargetProperty=
            "(InkCanvas.Background).(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)"
          From="Yellow" To="Blue" Duration="0:0:5"/>
          <ColorAnimation Storyboard.TargetName="myInkCanvas"
          Storyboard.TargetProperty=
            "(InkCanvas.Background).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)"
          From="Blue" To="Red" Duration="0:0:5"/>
          <ColorAnimation Storyboard.TargetName="myInkCanvas"
          Storyboard.TargetProperty=
            "(InkCanvas.Background).(LinearGradientBrush.GradientStops)[2].(GradientStop.Color)"
          From="Green" To="Blue" Duration="0:0:5"/>
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger.Actions>
  </EventTrigger>
</Page.Triggers>

在 XAML 背後加入某些程式碼

XAML 讓設計使用者介面變得非常容易的同時,任何實際的應用程式都必須加入程式碼,才能處理事件。以下的簡單範例,會放大筆墨以回應滑鼠右鍵按一下的動作:

在 XAML 中設定 MouseRightButtonUp 處理常式:

<InkCanvas Name="myInkCanvas" MouseRightButtonUp="RightMouseUpHandler">

在 Visual Studio 的 [方案總管] 中,展開 Windows1.xaml 並開啟程式碼後置檔案,如果您使用的是 Visual Basic,則請開啟 Window1.xaml.cs 或 Window1.xaml.vb。加入下列事件處理常式程式碼:

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 'RightMouseUpHandler
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);
}

現在,請執行您的應用程式。加入某些筆墨,然後以滑鼠右鍵按一下,或使用手寫筆執行按住的對等動作。

使用程序性程式碼,而不要使用 XAML

您可以從程序性程式碼存取所有 WPF 功能。以下是將 "Hello Ink World" 用於完全不使用 XAML 的 WPF 應用情形。將下列程式碼貼到 Visual Studio 中的空白主控台應用程式。將參考加入至 PresentationCore、PresentationFramework 和 WindowsBase 組件,並按下 F5 建置應用程式:

Imports System
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 'OnStartup

End Class 'Program

Module Module1

    Sub Main()
        Dim prog As New Program()
        prog.Run()

    End Sub

End Module
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();
    }
}

請參閱

概念

收集筆墨

手寫辨識

儲存筆墨

其他資源

數位筆墨