Блог Сергея Байдачного

Мой блог о технологиях

Введение в Silverlight 5 (часть 4)

leave a comment »

Перейдем к четвертой части (из семи) нашего рассказа о Silverlight 5. Рассмотрим улучшения при работе с текстом, печатью, а также возможность вызова нативных функций системы.

Работа с текстом

Silverlight 5 предлагает несколько интересных возможностей при работе с текстом.

Так, элементы управления Control, TextBlock и TextElement, имеют новое свойство CharacterSpacing. Это свойство позволяет установить расстояние между символами внутри текста.

Свойство LineHeight позволяет установить ширину строки (можно интерпретировать, как расстояние между строками) и определено в таких элементах как Block, TextBlock, TextBox и RichTextBox. Для элемента RichTextBox можно также задать стратегию с помощью свойства LineStackingStrategy. Ниже пример текста внутри элемента TextBlock с расстоянием между строками 30 и расстоянием между символами – 200:

 

image

 

Наконец, Silverlight 5 стал поддерживать два новых текстовых элемента, это RichTextBlock и RichTextBlockOverflow. Эти элементы аналогичны элементам RichTextBox и RichTextBoxOverflow, но позволяют отображать текст только на чтение.

Для тех, кто еще не познакомился с элементом RichTextBlockOverflow, рассмотрим небольшой пример:

 

   1:  <StackPanel x:Name="LayoutRoot" Background="White"
   2:     Orientation="Horizontal" VerticalAlignment="Top">
   3:     <RichTextBlock
   4:        Width="250" FontSize="16" OverflowContentTarget=
   5:        "{Binding ElementName=SecondBox}">
   6:        <Paragraph>
   7:           В лесу родилась елочка,
   8:        </Paragraph>
   9:        . . . . . . . . //повторить 20 разJ
  10:     </RichTextBlock>
  11:   
  12:     <RichTextBlockOverflow Width="250" Name="SecondBox">
  13:     </RichTextBlockOverflow>
  14:  </StackPanel>

 

Результат работы этого кода показан ниже:

 

image

 

Как видно, RichTextBlockOverflow может отображать текст, который не «вмещается» в основной элемент RichTextBlock. Благодаря таким элементам мы можем азмещать текст в 2, 3 и более колонках (или реализовывать более сложные сценарии).

Печать

Silverlight 5 позволяет теперь не только реализовать растровую, но и векторную печать. Для этих целей используется все тот же метод Print класса PrintDocument, который осуществляет попытку печати в векторном формате, а в случае неудачи (принтер не поддерживает), перейти к печати в растровом виде. Растровую печать можно инициировать с помощью нового метода PrintBitmap.

PInvoke

В документации эта возможность пока не описана, но я знал, что она уже реализована – возможность вызова методов Windows API из Silverlight приложений, обладающих повышенными полномочиями. Причем речь идет о приложениях, которые работают как в браузере, так и вне браузера. Поскольку вызов нативных функций в .NET обычно осуществляется с помощью атрибута DllImport, то я решил попробовать этот механизм и тут (запустив приложение с повышенными привилегиями):

 

   1:  public partial class MainPage : UserControl
   2:  {
   3:    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
   4:    public static extern int MessageBox(IntPtr hWnd, 
   5:      String text, String caption, uint type);
   6:   
   7:    public MainPage()
   8:    {
   9:     MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
  10:     InitializeComponent();
  11:    }
  12:  }

 

Удивительно то, что оно заработало. На экране, поверх браузера я увидел стандартный MessageBox. Пользуйтесь!

Реклама

Written by Sergiy Baydachnyy

05.09.2011 в 18:10

Опубликовано в SilverLight

Tagged with

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: