Путь разработчика    

Масштабируйте рисунок, чтобы он соответствовал целевой области в C#

Рекомендуем: Признаки и причины неисправной подвески
eda2480d

Многие программы рисования должны масштабировать чертеж, чтобы он соответствовал целевой области, либо с растяжкой, либо без нее. Следующий метод MapDrawing преобразует объект Graphics, поэтому он сопоставляет прямоугольник чертежа с прямоугольником на объекте Graphics.

Python

Код начинается с сброса преобразований объекта Graphics для удаления любых предыдущих преобразований.

Далее код находит центр прямоугольника чертежа и преобразует его, чтобы он был центрирован в начале координат. Затем, когда код масштабирует чертеж на следующем шаге, он остается центрированным в начале координат.

Затем код масштабирует чертеж. Сначала он находит масштабные коэффициенты, которые заставляют рисунок заполнять целевую область вывода. Тогда, если параметр stretch false, указывая на то, что вы не хотите растягивать результат, код устанавливает оба масштабных коэффициента на меньший из двух. Это делает результат как можно большим, не искажая его.

Затем код масштабирует чертеж. Сначала он находит масштабные коэффициенты, которые заставляют рисунок заполнять целевую область вывода. Тогда, если параметр stretch false, указывая на то, что вы не хотите растягивать результат, код устанавливает оба масштабных коэффициента на меньший из двух. Это делает результат как можно большим, не искажая его.

...

В этот момент объект Graphics настроен, чтобы сделать чертеж в его конечном масштабе с центром в начале координат. Теперь код добавляет преобразование для перемещения центра чертежа (начало координат) в центр целевой области. Снова обратите внимание, что код добавляет это преобразование.

После использования этого метода для применения этих преобразований к объекту Graphics все, что вы рисуете на нем, будет соответствующим образом отображено на целевой прямоугольник.

Следующий код показывает, как программа использует метод MapDrawing для рисования изображения, показанного выше.

Python

Метод DrawSmiley использует эллипсы и дугу для рисования смайлинки в области (-1, -1) - (1, 1). Это просто, поэтому здесь не показано. Загрузите пример, чтобы увидеть, как он работает.

Обработчик событий Paint RectangleF с именем smiley_rect, чтобы представить область, в которой должен быть нарисован смайлик. Он также делает переменные wid и hgt для измерения половины клиентской области формы (минус 1, так что вещи подходят по краям).

Источник: http://csharphelper.com/blog/2014/11/scale-a-drawing-so-it-fits-a-target-area-in-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:


Длина строки в C#

Свойство Length в String Class возвращает общее количество символов в String. Синтаксис: int string.length Возвращает: Целое число: количество символов в у...

21 06 2021 10:34:18

Как найти пятницу тринадцатое в C#

Код сначала очищает результат ListBox. Затем он получает даты начала и окончания и использует их для получения номеров начала и конца года. Далее программа...

20 06 2021 5:43:12

Списки клонов и массивы объектов в C#

Это последнее сообщение, которое я напишу о клонах, по крайней мере на некоторое время. Некоторые классы коллекций уже могут создавать клоны. Например, мас...

19 06 2021 23:42:54

Класс InputStreamReader в Java

Класс InputStreamReader считывает символы из байтового входного потока. Он считывает байты и декодирует их на символы с использованием указанной кодировки....

18 06 2021 4:52:17

Формы размера, чтобы соответствовать их содержимому в C#

В этом примере показано, как размер форм подходит для их содержимого. Выяснить, как форматы размера могут быть сложными, особенно если форма содержит MenuS...

17 06 2021 15:24:34

Что на самом деле вызывает ошибку StackOverflow в Java?

StackOverflowError просто сигнализирует о том, что памяти больше нет. Он расширяет класс VirtualMachineError, что указывает на то, что JVM (виртуальная маш...

16 06 2021 17:34:53

Класс Java HashSet

Класс HashSet расширяет AbstractSet и реализует заданный интерфейс. Набор представляет собой набор, который не содержит повторяющихся элементов и элементы...

15 06 2021 12:38:56

Сделайте значки приложений приложений Windows Forms на соответствующих размерах в C#

Установка значка формы проста. Просто выберите форму в редакторе форм и установите ее свойство Icon. Windows использует этот значок разными способами. Напр...

14 06 2021 6:19:10

Что такое undefined x 1 в JavaScript?

Часть стандарта ECMA, JavaScript-консоли будут отображать объекты в виде массивов, когда объекты похожи на массивы. Например: для объекта, содержащего стро...

13 06 2021 2:24:54

MySQL 5.0. Библиотека программиста (Виктор Гольцман)

Эта книга предназначена для всех, кто желает освоить С У Б Д MySQL. Для ее чтения вам не нужны никакие специальные знания – достаточно быть пользователем Wind...

12 06 2021 9:42:25

Нарисуйте заполненную кривую хризантемы в C#

Этот пример очень похож на Нарисовать кривую хризантемы в C# кроме того, он рисует заполненную кривую хризантемы. Он заполняет кривую, окрашивая треугольни...

11 06 2021 19:36:17

Что значит Static в Java?

Static - это модификатор без доступа. Это означает, что что-то (поле, метод, блок или вложенный класс) связано с типом, а не с каким-либо конкретным экземп...

10 06 2021 7:10:13

Ошибка компиляции "Can not Find Symbol" в Java

Ошибки « Не удается найти символ» обычно возникают, когда вы пытаетесь ссылаться на необъявленную переменную в коде. Ошибка « Не удается найти символ» означа...

09 06 2021 14:22:13

C# Программирование на языке высокого уровня (Т.А. Павловская)

Книга "C# Программирование на языке высокого уровня" представляет собой учебный курс по программированию на языке C#. Автор рассказывает в своей книге об о...

08 06 2021 11:12:33

Объектно-ориентированное программирование в С++ (Лафоре Р. 2004)

Изучение объектно-ориентированной парадигмы программирования обычно ассоциируется с многочасовым курсом лекций и утомительными лабораторными занятиями, во...

07 06 2021 17:55:57

PHP и MySQL. Исчерпывающее руководство (Бретт Маклафлин)

Если у вас есть опыт разработки сайтов с помощью CSS и Javascript, то эта книга переведет вас на новый уровень веб-разработки — создание динамических веб-с...

06 06 2021 4:10:39

Set (набор) в Python

Python Set похож на словарь, неупорядоченный набор ключей, который хранится без каких-либо значений. Тип набор изменяемый , содержание может быть изменено...

05 06 2021 5:59:37

Выделение эллипса в программе WPF с использованием C#

В этом примере показано, как вы можете визуализировать эллипс в программе WPF. Обычно для рисования фигур в WPF вы используете какой-то объект. Вы можете д...

04 06 2021 1:35:31

Показывать сложный интерес в C#

Это более графическая версия примера Рассчитайте значение ежемесячной инвестиции в C# . Вместо добавления значений в элемент управления ListView этот приме...

03 06 2021 9:40:59

Среда разработки Xcode

Xcode – IDE под Mac OS от Apple. Распространяется бесплатно через App Store. Благодаря свободному набору компиляторов данная среда разработки может работат...

02 06 2021 3:18:35

Разница между абстрактным классом и интерфейсом в Java

Термин « Абстракция» означает скрытие внутренней реализации функции и только отображение функциональности для пользователей. Это означает, что абстрактный к...

01 06 2021 20:19:39

Тип заливки в Java

Изменение значения из одного типа данных в переменную другого типа называется преобразованием типа данных. Существует два типа литья, Примитивное литье тип...

31 05 2021 21:30:12

Break и Continue в Python

Иногда желательно пропустить некоторые утверждения внутри цикла или немедленно завершить цикл, не проверяя тестовое выражение. В таких случаях мы можем исп...

30 05 2021 20:54:53

Используйте всплывающие подсказки в C#

Чтобы создать всплывающие подсказки во время разработки, добавьте компонент ToolTip в форму. Он добавляет новое свойство для каждого из других элементов уп...

29 05 2021 0:25:54

HTML5 для веб-дизайнеров (Кит Джереми)

В HTML5 появилось много интересных тэгов, в том числе поддержка аудио и видео-файлов. Теперь вам не надо тратить время на установку плагинов для проигрыван...

28 05 2021 4:58:48

Среда разработки Android Studio

Android Studio – интегрированная среда разработки для платформы Android, разработанная компанией Google в 2013 году. Вплоть до 2014 года существовала как п...

27 05 2021 16:44:30

Печать сетки значений с чередующимися цветами строк в C#

Следующий код показывает, как программа печатает свою сетку. Полный код не слишком сложный, но он длинный, поэтому здесь он разбит на несколько методов. Эт...

26 05 2021 12:13:41

Как сделать класс с определением и повышением событий в C#

В этом примере используется класс BankAccount для управления банковским счетом (и для определения способов и событий события). Если программа пытается удал...

25 05 2021 12:32:45

Процедурные языки программирования

Процедурные языки программирования - языки программирования, код которых можно разделить на процедуры. Программирование – это очень объемная сфера знаний, изучить которую целиком не сможет ни один человек на свете....

24 05 2021 13:44:20

Список всех файлов в папке в Java

Как читать все .txt-файлы в папке Подсчет количества файлов в каталоге с помощью Java Источник: http://net-informations.com/Java/files/folder.htm...

23 05 2021 13:49:40

Проверка, нет ли строки в C#

В этом примере используются три строки для сравнения разных методов для определения, является ли строка пустой. Один из методов: метод string класса IsNull...

22 05 2021 9:34:45

Язык программирования Python (Д.С.Откидач)

Python является простым и, в то же время, мощным интерпретируемым объектно-ориентированным языком программирования. Он предоставляет структуры данных высок...

21 05 2021 23:20:36

Получить HTML содержимое веб-страницы с помощью Python

Python предоставляет несколько способов сделать это в своей стандартной библиотеке . Вероятно, самый популярный способ загрузки файла - через HTTP с помощь...

20 05 2021 2:32:39

Рисуем преобразованный текст в C#

В этом примере используется следующий обработчик события Paint для рисования преобразованного текста. Код добавляет преобразования к объекту Graphics, чтоб...

19 05 2021 9:41:47

Разница между окном, документом и экраном в JavaScript?

Объект окна JavaScript расположен вверху иерархии объектов JavaScript и представляет окно браузера. Объект окна поддерживается всеми браузерами. Все глобал...

18 05 2021 15:18:48

Что подразумевается под анонимным классом в Java?

Анонимный класс в Java - это класс, которому не присвоено имя, и объявляется и создается в одном выражении. Анонимный класс обычно используется на платформ...

17 05 2021 3:50:31

Отправлять распечатку непосредственно на конкретный принтер в C#

Код устанавливает имя принтера, а затем вызывает метод PrintDocument объекта Print для немедленной отправки распечатки на этот принтер. Источник: http://cs...

16 05 2021 1:21:23

Сортировка слов по количеству букв в C#

В этом примере сортируются слова по количеству букв. Он подсчитывает количество отдельных букв в списке слов и отображает слова и их подсчеты, отсортирован...

15 05 2021 23:40:44

Разработка устройств на микроконтроллерах AVR: шагаем от чайника до профи (А. Белов)

Книга « Разработка устройств на микроконтроллерах AVR: шагаем от чайника до профи» Белова А. В. поможет Вам всего за шесть несложных шагов преодолеть путь от...

14 05 2021 22:13:54

Нарисуйте масштабированное нормальное распределение в C#

Пример Нарисовать нормальную кривую распределения в C# показывает, как для нормального распределения. К сожалению, для некоторых средств и стандартных откл...

13 05 2021 4:45:41

Отображение всплывающих подсказок для элементов ListView в C#

В этом примере показано, как отображать различные подсказки для элементов в ListBox. Когда вы перемещаете мышь над элементом в ListBox, программа используе...

12 05 2021 7:16:56

1С: Бухгалтерия 8 с нуля. 100 уроков для начинающих (Гладкий А.)

Книга 1 С: Бухгалтерия 8 с нуля. 100 уроков для начинающих содержит полное описание приемов и методов работы с программой 1 С: Бухгалтерия 8. Рассматривается...

11 05 2021 6:28:42

Модификаторы доступа в Java

Одним из основных принципов объектно-ориентированного программирования является «скрытие информации», что означает, что объекты не раскрывают все их детали...

10 05 2021 17:55:10

Перемещение элементов между двумя ListBoxes в C#

Один из способов позволить пользователю выбрать элементы из списка - использовать ListBox или CheckedListBox. Пользователь может щелкнуть, Ctrl + Click, Sh...

09 05 2021 8:49:55

Самый простой и легкий язык программирования

Какой самый простой и легкий язык программирования? Программирование в наше время стало одним из самых перспективных занятий для молодых людей....

08 05 2021 19:17:59

Преобразование растрового изображения в курсор в C#

Преобразование растрового изображения в курсор непросто, но вы можете сделать это, используя функцию API CreateIconIndirect. В этом примере используется сл...

07 05 2021 16:47:30

Каковы недостатки Python?

Недостатками Python являются: Скорость Python медленнее, чем C или C ++. Но, конечно, Python - это язык высокого уровня, в отличие от C или C ++ он не ближ...

06 05 2021 21:32:21

В чем смысл System.out.println в Java?

System.out.println - это оператор Java, который печатает переданный аргумент, в System.out, который обычно является stdout. System - класс out - это переме...

05 05 2021 5:41:38

Получите размер файла и время последней модификации на FTP-сервере в C#

Метод FtpGetFileSize, показанный в следующем коде, получает размер файла в байтах. Параметр uri предоставляет полный путь к файлу, как в ftp://www.somewher...

04 05 2021 23:57:49

Получить использование памяти программы в C#

Код получает объект Process программы, а затем использует его свойства, чтобы узнать об использовании памяти. Источник: http://csharphelper.com/blog/2015/1...

03 05 2021 2:39:41

Еще:
Программирование -1 :: Программирование -2 :: Программирование -3 :: Программирование -4 :: Программирование -5 ::

И сказал Великий Программист:
«После трёх дней без программирования жизнь теряет смысл»