русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Изображения


Дата добавления: 2013-12-23; просмотров: 1568; Нарушение авторских прав


Замкнутые кривые

Замкнутые кривые (замкнутые сплайны) рисуются по тому же принципу, что и многоугольники, т.е. задается перо или кисть, а также набор точек, через которые должна пройти кривая. Для этого используются методы DrawClosedCurve и FillClosedCurve, например:

Visual Basic .Net:

Dim g As Graphics

g = Me.CreateGraphics

Dim redpen As Pen

redpen = New Pen(Color.Red, 3)

Dim points As Point() = {New Point(10, 10), New Point(10, 100),New Point(200, 50), New Point(250, 300)}

g.DrawClosedCurve(redpen, points)

Visual C#:

Graphics g;

g = this.CreateGraphics();

Pen redpen;

redpen = new Pen(Color.Red, 3);

Point[] points = { new Point(10, 10), new Point(10, 100), new Point(200, 50), new Point(250, 300) };

g.DrawClosedCurve(redpen, points);

 

Изображения выводятся в заданной области объекта Graphics с помощью метода DrawImage. Само изображение задаётся с помощью объекта Image также, как и при создании объекта PictureBox. Метод DrawImage имеет несколько форм. Самой простой формой прорисовки изображения является задание координат его левого верхнего угла и размеров, например:

Visual Basic .Net:

 

Dim img As Image

img = Image.FromFile("C\pic1.jpg")

Dim g As Graphics

g = Me.CreateGraphics

g.DrawImage(img, 0, 0, 200, 200)

Visual C#:

 

Image img;

img = Image.FromFile("C:\\pic1.jpg");

Graphics g;

g = this.CreateGraphics();

g.DrawImage(img, 0, 0, 200, 200);

 

Этот код рисует заданное изображение размером 200 х 200 пикселей, начиная с левого верхнего угла формы. Если размеры изображения в объекте Imageне соответствуют третьему и четвёртому аргументам объекта DrawImage, то изображение увеличивается или уменьшается. Вообще третий и четвёртый аргументы данного метода не являются обязательными, если они не указаны, то изображение создается в своих реальных размерах, а в случае, если размеры объекта, на котором оно рисуется, меньше, то изображение обрезается.



Можно рисовать изображение в заданном прямоугольнике, например:

Visual Basic .Net:

Dim img As Image

img = Image.FromFile("C\pic1.jpg")

Dim g As Graphics

g = Me.CreateGraphics

Dim r1 AsNew Rectangle(100, 100, 100, 100)

g.DrawImage(img, r1)

Visual C#:

 

Image img;

img = Image.FromFile("C:\\pic1.jpg ");

Graphics g;

g = this.CreateGraphics();

Rectangle r1 = new Rectangle(100, 100, 100, 100);

g.DrawImage(img, r1);

 

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

Третья форма метода DrawImage позволяет создать изображение, изменив его форму в виде параллелограмма. В качестве аргумента задаётся массив из трёх точек, соответствующих левому верхнему, правому верхнему и левому нижнему углам параллелограмма. Координаты правого нижнего угла вычисляются автоматически, например:

Visual Basic .Net:

Dim img AsImage

img = Image.FromFile("C\pic1.jpg")

Dim g As Graphics

g = Me.CreateGraphics

Dim points() As Point = {New Point(100, 100), New Point(550, 100), New Point(150, 250)}

g.DrawImage(img, points)

Visual C#:

Image img;

img = Image.FromFile("C:\\ pic1.jpg");

Graphics g;

g = this.CreateGraphics();

Point[] points = { new Point(100, 100), new Point(550, 100), new Point(150, 250) };

g.DrawImage(img, points);

 

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

Visual Basic .Net:

Dim img As Image

img = Image.FromFile("C\pic1.jpg")

Dim g As Graphics

g = Me.CreateGraphics

Dim points() As Point = {New Point(100, 100), New Point(325, 100), New Point(150, 250)}

Dim r1 AsNew Rectangle(10, 10, 50, 50)

g.DrawImage(img, points,r1, GraphicsUnit.Pixel)

Visual C#:

Image img;

img = Image.FromFile("C:\\ pic1.jpg");

Graphics g;

g = this.CreateGraphics();

Point[] points = { new Point(100, 100), new Point(550, 100), new Point(150, 250) };

Rectangle r1 = new Rectangle(10, 10, 50, 50);

g.DrawImage(img, points, r1, GraphicsUnit.Pixel);

 

Этот код вырезает из изображения квадрат размером 50 х 50 пикселей, начиная с точки (10,10) и отображает его в параллелограмме, задаваемом точками массива points. Следует отметить, что параметры прямоугольника в данном случае относятся к изображению (т.е. к объекту Image), а не к объекту Graphics. Если задать размеры прямоугольника, равные размеру изображения, а координаты точки – (0,0), то изображение выведется таким же образом, как в предыдущем случае.

С помощью данного метода можно также управлять гаммой цветов изображения. Для этого используется аргумент атрибутов изображения, который определяется как объект ImageAttributes. У этого объекта имеется метод SerGamma, который и устанавливает гамму цветов. Гамма определяется как значение типа Single. По умолчанию значение гаммы равно 1, увеличение гаммы делает цвета более тёмными, уменьшение – более светлыми. Следует отметить, что понятия гаммы и яркости являются различными. При изменении гаммы учитывается весь диапазон цветов изображения, но при этом на разные цвета изменение гаммы влияет по разному, а также изменяется контрастность. Рассмотрим пример:

Visual Basic .Net:

Dim img As Image

img = Image.FromFile("C\pic1.jpg")

Dim g As Graphics

g = Me.CreateGraphics

Dim points() As Point = {New Point(100, 100), New Point(325, 100), New Point(150, 250)}

Dim r1 AsNew Rectangle(10, 10, 50, 50)

Dim atr AsNew ImageAttributes

atr.SetGamma(0.1)

g.DrawImage(img, points,r1, GraphicsUnit.Pixel, atr)

Visual C#:

Image img;

img = Image.FromFile("C:\\ pic1.jpg");

Graphics g;

g = this.CreateGraphics();

Point[] points = { new Point(100, 100), new Point(550, 100), new Point(150, 250) };

Rectangle r1 = new Rectangle(10, 10, 50, 50);

ImageAttributes atr = new ImageAttributes();

atr.SetGamma(0.1f);

g.DrawImage(img, points, r1, GraphicsUnit.Pixel, atr);

 

Этот код рисует фрагмент изображения также, как и в предыдущем случае, а также изменяет гамму цветов до значения 0.1, т.е. делает изображение достаточно бледным.

Использование метода DrawImage для рисования сложнее создания изображений на элементе PictureBox. Кроме этого, при его использовании, как и при рисовании с помощью других графических методов, необходимо учитывать возможность изменения размеров формы, многократного её вызова на экран и т.д. Однако и возможности данного метода значительно шире. Например, изображение можно выводить по частям, или постепенно изменяя его гамму цветов – от самого бледного до исходного.

 



<== предыдущая лекция | следующая лекция ==>
Кривые Безье | Комбинация графических изображений


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.