Gambaran Umum Anotasi
Menulis catatan atau komentar di dokumen kertas adalah aktivitas biasa yang hampir kami ambil begitu saja. Catatan atau komentar ini adalah "anotasi" yang kami tambahkan ke dokumen untuk menandai informasi atau untuk menyoroti item yang menarik untuk referensi nanti. Meskipun menulis catatan pada dokumen cetak mudah dan biasa, kemampuan untuk menambahkan komentar pribadi ke dokumen elektronik biasanya sangat terbatas, jika tersedia sama sekali.
Topik ini meninjau beberapa jenis anotasi umum, khususnya catatan tempel dan sorotan, dan menggambarkan bagaimana Microsoft Annotations Framework memfasilitasi jenis anotasi ini dalam aplikasi melalui kontrol tampilan dokumen Windows Presentation Foundation (WPF). Kontrol tampilan dokumen WPF yang mendukung anotasi termasuk FlowDocumentReader dan FlowDocumentScrollViewer, serta kontrol yang berasal dari DocumentViewerBase seperti DocumentViewer dan FlowDocumentPageViewer.
Catatan Tempel
Catatan tempel khas berisi informasi yang ditulis pada selembar kecil kertas berwarna yang kemudian "macet" ke dokumen. Catatan tempel digital menyediakan fungsionalitas serupa untuk dokumen elektronik, tetapi dengan fleksibilitas tambahan untuk menyertakan banyak jenis konten lain seperti teks yang diketik, catatan tulisan tangan (misalnya, goresan "tinta" PC Tablet), atau tautan Web.
Ilustrasi berikut menunjukkan beberapa contoh sorotan, catatan tempel teks, dan anotasi catatan lekat tinta.
Contoh berikut menunjukkan metode yang dapat Anda gunakan untuk mengaktifkan dukungan anotasi di aplikasi Anda.
// ------------------------ StartAnnotations --------------------------
/// <summary>
/// Enables annotations and displays all that are viewable.</summary>
private void StartAnnotations()
{
// If there is no AnnotationService yet, create one.
if (_annotService == null)
// docViewer is a document viewing control named in Window1.xaml.
_annotService = new AnnotationService(docViewer);
// If the AnnotationService is currently enabled, disable it.
if (_annotService.IsEnabled == true)
_annotService.Disable();
// Open a stream to the file for storing annotations.
_annotStream = new FileStream(
_annotStorePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
// Create an AnnotationStore using the file stream.
_annotStore = new XmlStreamStore(_annotStream);
// Enable the AnnotationService using the new store.
_annotService.Enable(_annotStore);
}// end:StartAnnotations()
' ------------------------ StartAnnotations --------------------------
''' <summary>
''' Enables annotations and displays all that are viewable.</summary>
Private Sub StartAnnotations()
' If there is no AnnotationService yet, create one.
If _annotService Is Nothing Then
' docViewer is a document viewing control named in Window1.xaml.
_annotService = New AnnotationService(docViewer)
End If
' If the AnnotationService is currently enabled, disable it.
If _annotService.IsEnabled = True Then
_annotService.Disable()
End If
' Open a stream to the file for storing annotations.
_annotStream = New FileStream(_annotStorePath, FileMode.OpenOrCreate, FileAccess.ReadWrite)
' Create an AnnotationStore using the file stream.
_annotStore = New XmlStreamStore(_annotStream)
' Enable the AnnotationService using the new store.
_annotService.Enable(_annotStore)
End Sub
Sorotan
Orang menggunakan metode kreatif untuk menarik perhatian item yang menarik ketika mereka menandai dokumen kertas, seperti menggarisbawahi, menyoroti, memutar kata-kata dalam kalimat, atau menggambar tanda atau notasi di margin. Sorot anotasi dalam Kerangka Kerja Anotasi Microsoft menyediakan fitur serupa untuk menandai informasi yang ditampilkan dalam kontrol tampilan dokumen WPF.
Ilustrasi berikut menunjukkan contoh anotasi sorotan.
Pengguna biasanya membuat anotasi dengan terlebih dahulu memilih beberapa teks atau item yang menarik, lalu mengklik kanan untuk menampilkan opsi anotasi ContextMenu . Contoh berikut menunjukkan Extensible Application Markup Language (XAML) yang dapat Anda gunakan untuk mendeklarasikan ContextMenu dengan perintah yang dirutekan yang dapat diakses pengguna untuk membuat dan mengelola anotasi.
<DocumentViewer.ContextMenu>
<ContextMenu>
<MenuItem Command="ApplicationCommands.Copy" />
<Separator />
<!-- Add a Highlight annotation to a user selection. -->
<MenuItem Command="ann:AnnotationService.CreateHighlightCommand"
Header="Add Highlight" />
<!-- Add a Text Note annotation to a user selection. -->
<MenuItem Command="ann:AnnotationService.CreateTextStickyNoteCommand"
Header="Add Text Note" />
<!-- Add an Ink Note annotation to a user selection. -->
<MenuItem Command="ann:AnnotationService.CreateInkStickyNoteCommand"
Header="Add Ink Note" />
<Separator />
<!-- Remove Highlights from a user selection. -->
<MenuItem Command="ann:AnnotationService.ClearHighlightsCommand"
Header="Remove Highlights" />
<!-- Remove Text Notes and Ink Notes from a user selection. -->
<MenuItem Command="ann:AnnotationService.DeleteStickyNotesCommand"
Header="Remove Notes" />
<!-- Remove Highlights, Text Notes, Ink Notes from a selection. -->
<MenuItem Command="ann:AnnotationService.DeleteAnnotationsCommand"
Header="Remove Highlights & Notes" />
</ContextMenu>
</DocumentViewer.ContextMenu>
Penahanan Data
Kerangka Kerja Anotasi mengikat anotasi ke data yang dipilih pengguna, bukan hanya ke posisi pada tampilan tampilan. Oleh karena itu, jika tampilan dokumen berubah, seperti ketika pengguna menggulir atau mengubah ukuran jendela tampilan, anotasi tetap dengan pilihan data yang terikat. Misalnya, grafik berikut mengilustrasikan anotasi yang telah dibuat pengguna pada pilihan teks. Saat tampilan dokumen berubah (menggulir, mengubah ukuran, menskalakan, atau memindahkan), anotasi sorotan bergerak dengan pilihan data asli.
Anotasi yang Cocok dengan Objek Anotasi
Anda dapat mencocokkan anotasi dengan objek anotasi yang sesuai. Misalnya, pertimbangkan aplikasi pembaca dokumen sederhana yang memiliki panel komentar. Panel komentar mungkin merupakan kotak daftar yang menampilkan teks dari daftar anotasi yang berlabuh ke dokumen. Jika pengguna memilih item dalam kotak daftar, aplikasi akan menampilkan paragraf dalam dokumen tempat objek anotasi terkait dilabuhkan.
Contoh berikut menunjukkan cara mengimplementasikan penanganan aktivitas dari kotak daftar seperti itu yang berfungsi sebagai panel komentar.
void annotationsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Annotation comment = (sender as ListBox).SelectedItem as Annotation;
if (comment != null)
{
// IAnchorInfo info;
// service is an AnnotationService object
// comment is an Annotation object
info = AnnotationHelper.GetAnchorInfo(this.service, comment);
TextAnchor resolvedAnchor = info.ResolvedAnchor as TextAnchor;
TextPointer textPointer = (TextPointer)resolvedAnchor.BoundingStart;
textPointer.Paragraph.BringIntoView();
}
}
Private Sub annotationsListBox_SelectionChanged(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)
Dim comment As Annotation = TryCast((TryCast(sender, ListBox)).SelectedItem, Annotation)
If comment IsNot Nothing Then
' service is an AnnotationService object
' comment is an Annotation object
info = AnnotationHelper.GetAnchorInfo(Me.service, comment)
Dim resolvedAnchor As TextAnchor = TryCast(info.ResolvedAnchor, TextAnchor)
Dim textPointer As TextPointer = CType(resolvedAnchor.BoundingStart, TextPointer)
textPointer.Paragraph.BringIntoView()
End If
End Sub
Contoh skenario lain melibatkan aplikasi yang memungkinkan pertukaran anotasi dan catatan tempel antara pembaca dokumen melalui email. Fitur ini memungkinkan aplikasi ini untuk menavigasi pembaca ke halaman yang berisi anotasi yang sedang ditukar.
Baca juga
.NET Desktop feedback
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk