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

Нарисуйте кривую с несколькими цветами в C#


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

Один из способов добиться этого - сделать LinearGradientBrush, который определяет цвета, которые вы хотите использовать. Затем вы можете использовать кисть для определения пера, а затем рисовать с помощью пера.

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

Следующий код показывает, как пример рисует свою кривую.

Python

Код устанавливает свойство Graphics объекта Graphics объекта и использует метод SetTransformation, описанный в этом сообщении , чтобы отобразить координаты чертежа в координатах устройства. Затем он рисует несколько осей.

Далее код создает LinearGradientBrush, который будет вертикально от красного до синего. Параметр 270 указывает, что оттенки кисти от верхнего до нижнего.

После создания базовой кисти код дает новый ColorBlend, чтобы определить цвета кисти и их позиции внутри кисти. Например, красный цвет появляется 0,0 пути через кисть, оранжевый появляется 0,2 пути через кисть и т. д.

Обратите внимание, что ColorBlend должно иметь такое же количество цветов, что и позиции, и что позиции должны начинаться с 0.0 и заканчиваться 1.0.

Затем код устанавливает свойство InterpolationColors кисти, равное ColorBlend, чтобы использовать его.

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

Обратите внимание, что я сделал квадрат PictureBox и квадрат области рисования, чтобы преобразование масштабировалось на ту же величину в направлениях X и Y. Если координаты чертежа и устройства имеют разные формы, перо будет масштабироваться неравномерно и даст нечетные результаты.

Наконец, код рисует строки, соединяющие некоторые точки, определенные в обработчике событий Load.

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

Чтобы этот код не устанавливал свойство LineJoin для пера Bevel, поэтому есть не очень длинные точки. Обработчик события Load формы также не создает точки с координатами Y, близкими к 0 или 100.

В качестве альтернативы вы можете расширить кисть дальше выше и ниже области рисования, делая верхние области красными и нижние области синими.

Источник: http://csharphelper.com/blog/2016/02/draw-a-curve-with-multiple-colors-in-c/



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

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

Разница между system.gc() и runtime.gc() в Java

Типичный алгоритм сбора мусора (GC) в Java идентифицирует мусор, перемещая все ненужные объекты в куче и предполагая, что любой объект, который не был посе...

13 10 2019 5:26:26

Как перезагрузить страницу в JavaScript

Поскольку существует много способов сделать это, но следующий способ - перезагрузить один и тот же документ с помощью JavaScript. Свойство Window.location...

12 10 2019 7:38:58

Используйте код WPF для отображения индексов и надстроек в C#

В сообщении Отображение индексов и надстроек в текстовом блоке WPF в C# < / a> Я упомянул, что вы можете создавать индексы и надстрочные индексы в коде WPF...

11 10 2019 7:11:43

JavaScript. Справочник (Аллен Вайк)

Книга "Javascript. Справочник" представляет собой исключительно полный справочник по объектам, методам, атрибутам, высокоуровневым функциям языка написания...

10 10 2019 19:50:45

PHP: обучение на примерах (А. Кухарчик)

Книга предназначена прежде всего для начинающих, но может быть полезна и опытным программистам, использующим Р Н Р. Просто и доступно изложены основы Р Н Р — п...

09 10 2019 8:22:14

LINQ. Карманный справочник (Джозеф Албахари, Бен Албахари)

Справочник посвящен технологии LINQ (Language Integrated Query) — новой функциональной возможности языка C# и платформы .NET Framework, которая позволяет п...

08 10 2019 19:56:17

Сравнение производительность типов данных int, long и byte в C#

Пример Сравните производительность типов float, double и decimal в C# , сравнивает производительность float, double и decimal . В этом примере выполняется...

07 10 2019 5:29:42

Разница между substr() и substring() в JavaScript

Строка JavaScript представляет собой объект, который представляет последовательность символов. Метод substr() извлекает части строки, начиная с символа в у...

06 10 2019 5:49:28

Слияние заставки и видео в каталоге в C#

( Обратите внимание, что этот пример был написан в Visual Studio 2010.) В этом примере показано, как вы можете объединять заставки и видео в каталоге. Приме...

05 10 2019 13:55:58

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

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

04 10 2019 10:53:34

Сохранение и восстановление изображений, сделанных пользователем в C#

Оказывается, это замечательно легко. Следующий код показывает, как программа сохраняет объекты Polyline, хранящиеся в списке Polylines. В коде отображается...

03 10 2019 12:28:47

Инициализировать словарь в C#

Сообщение Инициализация двумерных массивов в C# объясняет как инициализировать двумерный массив. Хотя Dictionary является более сложным типом данных, вы мо...

02 10 2019 8:38:16

PHP: обучение на примерах (А. Кухарчик)

Книга предназначена прежде всего для начинающих, но может быть полезна и опытным программистам, использующим Р Н Р. Просто и доступно изложены основы Р Н Р — п...

01 10 2019 20:12:48

Создание вашей первой программы на Python

Запуск Pytthon Interpreter После установки интерпретатор python живет в установленной директории. На компьютерах Windows установка Python обычно помещается...

30 09 2019 20:53:37

Что такое виртуальная машина Java?

Java Virtual Machine (JVM) - это спецификация, предоставляющая среду выполнения, в которой может быть запущен Java-байт-код. Как следует из названия, JVM д...

29 09 2019 7:21:37

Мифы о программировании

Многие люди считают профессию программиста одной из самых сложных, поэтому отказываются от идеи освоить её. Но вокруг IT существуют мифы, которые нужно раз...

28 09 2019 21:13:20

Получение значения переменных по имени в C#

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

27 09 2019 19:55:10

1С-программирование как дважды два. Самоучитель (Михайлов Сергей)

Книга "1 С-программирование как дважды два. Самоучитель" основана на личном опыте предпринимательской деятельности автора в сфере 1 С-программирования. Начин...

26 09 2019 2:53:23

Инициализация ComboBox из перечисления в C#

Часто полезно инициализировать ComboBox из перечисления, чтобы пользователь мог выбрать одно из значений перечисления. Вы можете ввести значение в ComboBox...

25 09 2019 23:21:40

Как подсчитать пиксели разных цветов в C#

Следующий CountPixels метод подсчитывает пиксели в изображении, который соответствует целевому цвету. Этот код достаточно прост. Он пропускает пиксели, выз...

24 09 2019 20:37:20

Преобразовать строку в число в Java? String to Int

Преобразование String в int или Integer - очень распространенная операция в Java. Существует несколько простых способов сделать это преобразование. Часто и...

23 09 2019 0:29:16

Важные характеристики объектов Python

Все объекты Python имеют уникальный идентификатор. Встроенная функция id() возвращает идентификатор объекта как целое. Это целое число обычно соответствует...

22 09 2019 2:57:46

Сделайте таймер обратного отсчета в C#

Когда программа запускается, она устанавливает имя и время события. Затем он включает управление Timer. В следующем коде показан обработчик событий Timer T...

21 09 2019 13:58:29

C++. От ламера до программера. Включая C++11 (Эллайн Алекс)

Описание книги C++. От ламера до программера. Включая C++11: Эта книга предлагает быстрый способ изучить принципы объектно-ориентированного программирования...

20 09 2019 10:20:18

Как использовать глобальную переменную в модулях python

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

19 09 2019 5:36:34

Перебрать записи в массиве неизвестной длины в C#

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

18 09 2019 15:48:32

Самоучитель Java (Хабибуллин И.Ш)

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

17 09 2019 9:31:13

В чем разница между поточной и многопроцессорной обработкой?

Нить процесса означает сегмент кода процесса, который имеет свой собственный идентификатор потока, счетчик программ, регистры и стек и может выполняться не...

16 09 2019 15:47:22

C++ для чайников (Стефан Рэнди Дэвис)

Научитесь программировать! Полное руководство по C++, с учетом стандартов C++ и C++ 14. Вы всегда хотели научиться программировать, но не знали, какой язык...

15 09 2019 18:23:53

Установить положение видео с помощью полосы прокрутки с помощью WPF в C#

Пример Управление видео с помощью WPF MediaElement в C# позволяет вам установить положение видео несколькими способами. Вы можете использовать кнопки Next...

14 09 2019 2:10:13

Создайте DataTable и привяжите его к DataGridView в C#

В этом примере показано, как можно построить DataTable и привязать его к элементу управления DataGridView. A DataTable представляет собой представление в р...

13 09 2019 3:57:53

В чем разница между созданием String как new() и literal?

Оба выражения дают объект String, но между ними существует тонкая разница. Когда вы используете новую строку («Hello World !!»); , он явно создает новый и...

12 09 2019 3:36:11

Обеспечить автосохранение в C#

Этот пример расширяет пример scribble (наиболее недавно описанный в post Предоставить отменить и повторить в C# ), поэтому он предоставляет функцию автомат...

11 09 2019 15:17:54

Используйте спрайты для анимации нескольких прыгающих мячей в C#

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

10 09 2019 22:31:51

Как рассчитать разницу дат в Java

Есть много способов найти разницу между датами. Ниже приведен самый простой способ найти разницу между двумя датами. Вы можете просто взять число миллисеку...

09 09 2019 16:42:33

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

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

08 09 2019 17:28:44

7 практических занятий по программированию в 1С 8.хх (Клюев В.В.)

7 практических занятий по программированию в 1 С 8.хх это пособие для освоения программирования и конфигурирования в системе 1 С: Предприятие 8.хх, на основе...

07 09 2019 4:10:43

Философия Java (Брюс Эккель)

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

06 09 2019 20:26:23

Разница между памятью Stack and Heap в Java

Модель Java Heap и Stack Memory определяет, как и когда разные потоки могут видеть значения, записанные в общие переменные другими потоками, и как синхрони...

05 09 2019 20:23:46

Нарисуйте блокированные тетраэдры в клетке «сегментов линии», используя WPF и C#

В этом примере используются два взаимосвязанных тетраэдра, окруженных кубической клеткой сегментов линии. К сожалению, заметное упущение из 3D-инструментов...

04 09 2019 17:46:35

Что такое виртуальная машина Java?

Java Virtual Machine (JVM) - это спецификация, предоставляющая среду выполнения, в которой может быть запущен Java-байт-код. Как следует из названия, JVM д...

03 09 2019 17:17:57

Web Scraping в Python?

Web Scraping - это метод компьютерного программного обеспечения для извлечения информации с веб-сайтов. Этот метод в основном фокусируется на преобразовани...

02 09 2019 22:19:25

Добавьте полезные расширения в класс BitArray в C#

Пример Использование класса BitArray в C# объясняет, как для использования класса BitArray. Этот пример добавляет некоторые полезные функции в класс BitArr...

01 09 2019 23:33:42

Сделать созданный владельцем ListBox в C#

В этом примере показано, как вы можете сделать созданный владельцем ListBox. Обычно ListBox отображает текстовое представление своих объектов, но вы можете...

31 08 2019 18:58:38

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

Когда вы нажимаете кнопку Go, программа использует следующий код для отображения совпадений регулярных выражений в строке. Код создает объект Regex, переда...

30 08 2019 7:55:17


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69