Библиотека knigago >> Компьютеры и Интернет >> Учебники и самоучители по компьютеру >> C#.программирование 2D и 3D векторной графики


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1091, книга: Удивительные блюда
автор: Нелля Лысенко

Книга "Удивительные блюда" авторства Нелли Лысенко — настоящая находка для любителей кулинарии. Сборник разнообразных рецептов удовлетворит вкусы даже самых требовательных гурманов. * Книга содержит более 300 рецептов блюд на все случаи жизни, от повседневных семейных обедов до изысканных застолий. * Автор предлагает интересные и необычные сочетания ингредиентов, которые порадуют ваших близких. * Каждый рецепт сопровождается четкими пошаговыми инструкциями, которые легко...

Н. А. Тюкачев - C#.программирование 2D и 3D векторной графики

C#.программирование 2D и 3D векторной графики
Книга - C#.программирование 2D и 3D векторной графики.  Н. А. Тюкачев  - прочитать полностью в библиотеке КнигаГо
Название:
C#.программирование 2D и 3D векторной графики
Н. А. Тюкачев

Жанр:

Учебники и самоучители по компьютеру, C, C++, C#

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "C#.программирование 2D и 3D векторной графики"


Читаем онлайн "C#.программирование 2D и 3D векторной графики". [Страница - 13]

Bitmap(theImg,
new Size(theImg.Width/2,theImg.Height/2));
Brush tBrush =
new TextureBrush(smallImg,
new Rectangle (0,0, smallImg.Width,

41

smallImg.Height));
Font tFont = new Font ("Times New Roman", 32,
FontStyle.Bold | FontStyle.Italic);
g.DrawString("Hello, from Beginning Visual",
tFont, tBrush, ClientRectangle);
tBrush.Dispose();
tFont.Dispose();
}

При запуске проекта на выполнение на экране должно появиться
изображение, показанное на рисунке 2.15.

Рис. 2.15. Прорисовка текста с использованием изображения

Метод DrawString() в качестве аргументов принимает строку,
шрифт, текстурную кисть и ограничивающий прямоугольник.
2.4.5. РАСТРОВОЕ РИСОВАНИЕ ЛИНИЙ
Существует два режима рисования линий: без сглаживания и со
сглаживанием. В рисовании без сглаживания все пиксели имеют один и тот
же цвет и линия рисуется ступенчато. При рисовании со сглаживанием
некоторые пиксели будут закрашиваться частично, позволяя избавиться от
ступенчатого представления наклонных линий. Однако для более
качественного рисования требуется больше времени для рисования.
На рисунке 2.16 представлена линия, нарисованная без использования
сглаживания, и та же линия, нарисованная с использованием сглаживания.

Рис. 2.16. Линия без сглаживания и со сглаживанием

42

Свойство перечислимого типа SmoothingMode класса Graphics
возвращает или задает качество визуализации графического объекта и может
принимать следующие значения:
– Invalid – недопустимый режим;
– Default – нет сглаживания;
– HighSpeed – высокая скорость: нет сглаживания;
– HighQuality – рисование со сглаживанием;
– None – нет сглаживания;
– AntiAlias – рисование со сглаживанием.
Ниже представлен пример, в котором рисуется эллипс без сглаживания,
со сглаживанием HighQuality и со сглаживанием AntiAlias.
Листинг 2.14. Рисование эллипса с различными сглаживаниями
private void Draw()
{
g = CreateGraphics();
g.Clear(Color.White);
Pen myPen = new Pen(Color.Black, 0.5F);
g.PageUnit = GraphicsUnit.Millimeter;
g.DrawEllipse(myPen, 10, 10, 30, 30);
g.SmoothingMode = SmoothingMode.HighQuality;
g.DrawEllipse(myPen, 10 + 35, 10, 30, 30);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.DrawEllipse(myPen, 10 + 70, 10, 30, 30);
}

Результат работы программы представлен на рисунке 2.17.

Рис. 2.17. Рисование эллипса со сглаживанием

Отличия между сглаживанием HighQuality и сглаживанием
AntiAlias в глаза не бросаются. Однако два последних эллипса
существенно отличаются от первого.

43

2.4.6. АЛГОРИТМЫ РИСОВАНИЯ ЛИНИЙ
К алгоритмам рисования линий предъявляются высокие требования:
должны работать быстро;
не должны потреблять большие объёмы оперативной памяти;
не использовать медленную вещественную арифметику;
для каждого пиксела производить как можно меньше вычислений;
линия должна быть связным объектом, то есть его пикселы должны
располагаться рядом друг с другом.
Рассмотрим наиболее известные алгоритмы растеризации отрезка:
рисование DDA-линии, алгоритм Брезенхема и алгоритм Ву.
2.4.6.1. Алгоритм DDA
Самым простым и очевидным способом создания алгоритма рисования
отрезка от точки (x0;y0) до точки (x1;y1) является использование
параметризированного уравнения прямой линии
x(t) = x0 + t *Δx;
y(t) = y0 + t *Δy.
(2.1)
В этом уравнении (x(t); y(t)) является точкой отрезка, а значение t
пробегает интервал от 0 до L. Значения L,x,y определяются по формулам
L = max(|x0 .. x1|; |y0 .. y1|);
x = x1..x0;
y = y1..y0.
(2.2)
Все числа являются вещественными, и для работы с ними используется
вещественная арифметика. При отрисовке каждого пиксела значения x(t) и
y(t) округляются и дают его целочисленные координаты. Именно поэтому
алгоритм сокращённо называется DDA от английского выражения Digital
Differential Analyzer (цифровой дифференциальный анализатор).






Листинг 2.15. Алгоритм DDA
private void DDA(int x1, int y1, int x2, int y2)
{
float L=Math.Max(Math.Abs(x2-x1),Math.Abs(y2-y1));
float dx=(x2-x1)/L;
float dy = (y2 - y1) / L;
float x = x1;
float y = y1;
for (int i=0; i --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.