Kniga-Online.club
» » » » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

<b>&lt;!-- Элемент Rectangle с трансформацией поворотом --&gt;</b>

&lt;Rectangle Height =&quot;100&quot; Width =&quot;40&quot; Fill =&quot;Red&quot;&gt;

  &lt;Rectangle.LayoutTransform&gt;

    &lt;RotateTransform Angle =&quot;45&quot;/&gt;

  &lt;/Rectangle.LayoutTransform&gt;

&lt;/Rectangle&gt;

Здесь элемент Button скашивается на поверхности на 20 градусов посредством трансформации SkewTransform:

<b>&lt;!-- Элемент Button с трансформацией скашиванием --&gt;</b>

&lt;Button Content =&quot;Click Me!&quot; Width=&quot;95&quot; Height=&quot;40&quot;&gt;

  &lt;Button.LayoutTransform&gt;

   &lt;SkewTransform AngleX =&quot;20&quot; AngleY =&quot;20&quot;/&gt;

  &lt;/Button.LayoutTransform&gt;

&lt;/Button&gt;

Для полноты картины ниже приведен элемент Ellipse, масштабированный на 20% с помощью трансформации ScaleTransform (обратите внимание на значения, установленные в свойствах Height и Width), а также элемент TextBox, к которому применена группа объектов трансформации:

<b>&lt;!-- Элемент Ellipse, масштабированный на 20% --&gt;</b>

&lt;Ellipse Fill =&quot;Blue&quot; Width=&quot;5&quot; Height=&quot;5&quot;&gt;

  &lt;Ellipse.LayoutTransform&gt;

    &lt;ScaleTransform ScaleX =&quot;20&quot; ScaleY =&quot;20&quot;/&gt;

  &lt;/Ellipse.LayoutTransform&gt;

&lt;/Ellipse&gt;

<b>&lt;!-- Элемент TextBox, повернутый и скошенный --&gt;</b>

&lt;TextBox Text =&quot;Me Too!&quot; Width=&quot;50&quot; Height=&quot;40&quot;&gt;

  &lt;TextBox.LayoutTransform&gt;

    &lt;TransformGroup&gt;

      &lt;RotateTransform Angle =&quot;45&quot;/&gt;

      &lt;SkewTransform AngleX =&quot;5&quot; AngleY =&quot;20&quot;/&gt;

    &lt;/TransformGroup&gt;

  &lt;/TextBox.LayoutTransform&gt;

&lt;/TextBox&gt;

Следует отметить, что в случае применения трансформации выполнять какие-либо ручные вычисления для реагирования на проверку попадания, перемещение фокуса ввода и аналогичные действия не придется. Графический механизм WPF самостоятельно решает такие задачи. Например, на рис. 26.8 можно видеть, что элемент TextBox по-прежнему реагирует на клавиатурный ввод.

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

Трансформация данных Canvas

Теперь нужно внедрить в пример RenderingWithShapes логику трансформации. Помимо применения объектов трансформации к одиночному элементу (Rectangle, TextBox и т.д.) их можно также применять к диспетчеру компоновки, чтобы трансформировать все внутренние данные. Например, всю панель DockPanel главного окна можно было бы визуализировать под углом:

&lt;DockPanel LastChildFill=&quot;True&quot;&gt;

  &lt;DockPanel.LayoutTransform&gt;

    &lt;RotateTransform Angle=&quot;45&quot;/&gt;

  &lt;/DockPanel.LayoutTransform&gt;

  ...

&lt;/DockPanel&gt;

В рассматриваемом примере это несколько чрезмерно, так что добавьте последнюю (менее радикальную) возможность, которая позволит пользователю зеркально отобразить целый контейнер Canvas и всю содержащуюся в нем графику. Начните с добавления в ToolBar финального элемента ToggleButton со следующим определением:

&lt;ToggleButton Name=&quot;flipCanvas&quot; Click=&quot;FlipCanvas_Click&quot;

    Content=&quot;Flip Canvas!&quot;/&gt;

Внутри обработчика события Click для нового элемента ToggleButton создайте объект RotateTransform и подключите его к объекту Canvas через свойство LayoutTransform, если элемент ToggleButton отмечен. Если же элемент ToggleButton не отмечен, тогда удалите трансформацию, установив свойство LayoutTransform в null.

private void FlipCanvas_Click(object sender, RoutedEventArgs e)

{

  if (flipCanvas.IsChecked == true)

  {

    RotateTransform rotate = new RotateTransform(-180);

    canvasDrawingArea.LayoutTransform = rotate;

  }

  else

  {

    canvasDrawingArea.LayoutTransform = null;

  }

}

Запустите приложение и добавьте несколько графических фигур в область Canvas, следя за тем, чтобы они находились впритык к ее краям. После щелчка на новой кнопке обнаружится, что фигуры выходят за границы Canvas (рис. 26.9). Причина в том, что не был определен прямоугольник отсечения.

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*