Share via


Visão geral de Anotações

Escrevendo anotações ou comentários sobre documentos em papel é uma atividade tão comum que quase vamos considerá-la como garantida. Essas anotações ou comentários são lembretes que nós adicionados aos documentos para sinalizar informações ou realçar itens de interesse para referência posterior. Embora gravar anotações em documentos impressos seja mais fácil e de senso comum, a capacidade de adicionar comentários pessoais aos documentos eletrônicos normalmente é muito limitada, se for disponível.

Este tópico examina os diversos tipos comuns de anotações, notas Notas Autoadesivas especificamente e realces e ilustra como a Microsoft Annotations Framework facilita a esses tipos de anotações em aplicativos por meio do Windows Presentation Foundation (WPF) controles de visualização de documentos. WPF documento exibindo controles que suportam sistema autônomo anotações incluem FlowDocumentReader e FlowDocumentScrollViewer, bem sistema autônomo controles derivados DocumentViewerBase Por exemplo DocumentViewerFlowDocumentPageViewer.

Este tópico contém as seguintes seções.

  • Notas Autoadesivas
  • Realces
  • Ancoragem de Dados
  • Correspondendo anotações com objetos detalhados
  • Tópicos relacionados

Notas Autoadesivas

Uma nota autoadesiva típica contém informações gravadas em uma folha de papel colorido pequena que é então "colada" em um documento. Notas autoadesivas digitais fornecem funcionalidades semelhante para documentos eletrônicos, mas com a flexibilidade adicional de incluir muitos outros tipos de conteúdo, como texto digitado, anotações manuscritas (por exemplo, traços de "tinta" Tablet PC) ou links da Web.

A ilustração a seguir mostra alguns exemplos de realce, observações adesivas de texto, e anotações a tinta em papel autoadesivo.

Anotações em realce, texto e notas adesivas manuscritas.

O exemplo a seguir mostra o método que você pode usar para ativar o suporte à anotação em seu aplicativo. Para o exemplo completo, consulte DocumentViewer com o exemplo de armazenamento em XML de anotações ou DocumentViewer com anotações XPS-armazenamento de exemplo.

// ------------------------ 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()

Realces

As pessoas usam métodos criativos para chamar a atenção para itens de interesse quando eles marcam um documento de papel, como sublinhado, realce, circular palavras em uma sentença, desenho de marcas ou notações na margem. Anotações de realce no Microsoft Annotations Framework fornecem um recurso semelhante para marcação de informações exibidas em controles de exibição de documentos de WPF .

A ilustração a seguir mostra um exemplo de uma anotação de realce.

Realçar anotação

Os usuários geralmente criam anotações selecionando primeiro um texto ou um item de interesse e, em seguida, clicando com o botão direito do mouse para exibir uma ContextMenu de opções de anotação. O exemplo a seguir mostra a Extensible Application Markup Language (XAML) que você pode usar para declarar um ContextMenu com comandos roteados que os usuários podem acessar para criar e gerenciar as anotações. Para o exemplo completo, consulte DocumentViewer com anotações XPS-armazenamento de exemplo.

<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 &amp; Notes" />
  </ContextMenu>
</DocumentViewer.ContextMenu>

Ancoragem de Dados

O Framework anotações vincula as anotações aos dados que o usuário seleciona, não apenas para uma posição no modo de exibição. Portanto, se o modo de exibição do documentos for alterado, como quando o usuário rola ou redimensiona a janela de exibição, a anotação fica com a seleção de dados ao qual ele está vinculado. Por exemplo, o gráfico a seguir ilustra uma anotação que o usuário fez em uma seleção de texto. Quando a exibição do documento altera (por rolagem, redimensionamento, escalas ou outro movimento), a anotação de realce se move com a seleção de dados original.

Ancoragem de dados de anotação

Correspondendo anotações com objetos detalhados

Você pode fazer a correspondência entre anotações com os objetos detalhados correspondentes. Por exemplo, considere um aplicativo simples de leitor de documento que tem um painel de comentários. O painel de comentários pode ser uma caixa de listagem que exibe o texto de uma lista de anotações que são ancoradas em um documento. Se o usuário selecionar um item na caixa de listagem, então o aplicativo traz para a visualização o parágrafo no documento ao qual o objeto da anotação correspondente é ancorado.

O exemplo a seguir demonstra como implementar o manipulador de eventos de tal caixa de listagem que serve como painel de comentários.

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

Outro cenário de exemplo envolve aplicativos que permitem a troca de anotações e notas autoadesivas entre leitores de documento por email. Este recurso permite a esses aplicativos navegar o leitor para a página que contém a anotação que está sendo trocada.

Consulte também

Tarefas

Como: Add a Command to a MenuItem

DocumentViewer com anotações XPS-armazenamento de exemplo

DocumentViewer com o exemplo de armazenamento em XML de anotações

Determinando o estilo de exemplo de anotações

Exemplo de serialização do documento

Conceitos

Annotations Schema

Visão Geral do ContextMenu

Visão geral de Comando

Flow Document Overview

Referência

DocumentViewerBase

DocumentViewer

FlowDocumentPageViewer

FlowDocumentScrollViewer

FlowDocumentReader

IAnchorInfo