русс | укр

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

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

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

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


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

Кисти и краски


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


Цвет

Перенос начала координат

Альтернативные единицы измерения

Значение Используемая единица измерения
Display 1/75 часть дюйма
Document 1/300 часть дюйма
Inch Дюйм
Millimeter  
Pixel Пиксел
Point 1/72 часть дюйма

 

private void MainForm_Paint(object sender, PaintEventArgs e)

{

e.Graphics.PageUnit = GraphicsUnit.Inch;

e.Graphics.DrawRectangle(new Pen(Color.Red,5), 0,0,100,100);

}

 

private void MainForm_Paint(object sender, PaintEventArgs e)

{

e.Graphics.PageUnit = GraphicsUnit.Point;

 

e.Graphics.TranslateTransforn(100,100);

 

e.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0,0,100,100);

}


Color c = Color.Magenta

 

Член Назначение
FromArgb() Возвращает объект типа Color. Для него указываются числовые значения компонент
FromKnownColor() Возвращает объект типа Color. Используются значения из перечисления
FromName Возвращает объект типа Color. Используются строковые значения
A, R, G, B Возвращают значения отдельных компонент
IsNameColor(), Name Эти члены применяются к текущему объекту Color. Они позволяют определить, соответствует ли какому-либо из именованных цветов
GetBrightness(), GetHue(), GetSaturation() Переход к другой цветосистеме (яркость, оттенок, насыщенность)
ToArgb() Возвращает числовые значения ARGB для объекта Color
ToKnownColor() Возвращает значение из перечисления KnownColor для объекта Color

 


Класс ColorDialog

 

 

Находится в пространстве имен System.Windows.Forms

1. Создаем объект класса ColorDialog.

2. Открываем диалоговое окно для пользователя методом ShowDialog();



3. После выбора пользователем цвета, получаем объект Color c помощью свойства Dialog. Color.

 

 

public class ColorDlgForm: System.Windows.Forms.Form

{

//работаем с классом ColorDialog

private System.Windows.Forms.ColorDialog();

public ColorDlgForm()

{

colorDlg = new System.Windows.Forms. ColorDialog();

this.MouseUp += MouseEventHandler(this.ColorDlgForm_MouseUp);

}

 

private void ColorDlgForm_MouseUp(object sender, MouseEventsArgs e)

{

if (colorDlg.ShowDialog() != DialogResult.Cancel)

{

CurrColor = colorDlg.Color;

this.BackColor = CurrColor;

string strARGB = colorDlg.Color.ToString();

MessageBox.Show(strARGB, “ColorIs”);

}

}

}

 


 

Font myFont = new Font(«Times New Roman», 12, FontStyle.Bold |FontStyle.Underline);

 

private void MainForm_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

 

FontFamily myFamily = new FontFamily("Verdana");

Font myFont = new Font(myFamily, 12);

 

int y = 0; // Эта переменная будет использоваться у нас для смещения по y

int fontHeight = myFont.Height; // Получаем высоту шрифта в пикселах

 

// Выводим информацию о единицах измерения, используемых для членов FontFamily

this.Text = "Measurements are in GraphicsUnit." + myFont.Unit.ToString();

 

g.DrawString("The Verdana family.", myFont, Brushes.Blue, 10, y);

y += 20;

 

// Выводим всю информацию о нашем семействе шрифтов

g.DrawString("Ascent for bold Verdana: " +

myFamily.GetCellAscent(FontStyle.Bold),

myFont, Brushes.Black, 10, y + fontHeight);

y += 20;

g.DrawString("Descent for bold Verdana: " +

myFamily.GetCellDescent(FontStyle.Bold),

myFont, Brushes.Black, 10, y + fontHeight);

y += 20;

g.DrawString("Line spacing for bold Verdana: " +

myFamily.GetLineSpacing(FontStyle.Bold),

myFont, Brushes.Black, 10, y + fontHeight);

y += 20;

g.DrawString("Height for bold Verdana: " + myFamily.GetEmHeight(FontStyle.Bold),

myFont, Brushes.Black, 10, y + fontHeight);

y += 20;

}

 

18 Пространство имен System.Drawing.Drawing2D

 

Класс Назначение
AdjustableArrowCap, CustomLineCap Определяет «наконечники» для перьев. В результате исходная точка и конец линии получают характерные завершения – стрелки или пользовательские фигуры
Blend, ColorBlend Используется для смешивания цветов. Обычно используется вместе с LinearGradientBrush
GraphicsPath, GraphicsPathIterator Объект GraphicsPath представляет набор связанных линий (прямых и кривых). В данный объект можно поместить практически любой тип геометрической фигуры (например, дуги, прямоугольники, отрезки прямой, многоугольники)
PathData Хранит графические данные для GraphicsPath
HatchBrush, LinearGradientBrush, PathGradientBrush Экзотические типы кистей

 

 

19 ПеречисленияDrawing.Drawing2D

 

Перечисление Назначение
DashStyle Стиль штриховых линий для пера
FillMode Заполнение внутренней области для геометрической фигуры
HatchStyle Варианты штриховки для кисти
LinearGradientMode Направление градиентного изменения цвета
LinearCap Стиль «наконечника» пера
PenAlignment Ориентация пера относительно проводимой им линии
PenType Тип линии, создаваемой пером
QualityMode, SmoothingMode, RenderingHint Качество вывода графического объекта

 


Член Назначение
FromFile() Статический метод для создания объекта Image из файла
FromHbitmap() Статический метод, создающий объект Bitmap на основе идентификатора окна (window handle)
FromStream() Статический метод позволяет создать объект Image, используя в качестве источника поток данных
Height, Width, Size, PhysicalDimensions, HorizontalDimensions, VerticalResolution Свойства для работы с размерами (измерениями) изображения
Palette Свойство возвращает объект ColorPalette, представляющий цветовую палитру, использованную для данного графического изображения
GetBounds() Возвращает прямоугольник, представляющий текущую область, занятую изображением
Save() Позволяет сохранить изображение в файл
   
Перечисление Назначение
DashStyle Стиль штриховых линий для пера
FillMode Заполнение внутренней области для геометрической фигуры
HatchStyle Варианты штриховки для кисти
LinearGradientMode Направление градиентного изменения цвета
LinearCap Стиль «наконечника» пера
PenAlignment Ориентация пера относительно проводимой им линии
PenType Тип линии, создаваемой пером
QualityMode, SmoothingMode, RenderingHint Качество вывода графического объекта
     

 


Создадим в нашем проекте новую форму RandomShapes, в которой будем рисовать и закрашивать геометрические фигуры трех разных типов - эллипсы, сектора, прямоугольники. Для каждого типа фигуры будем использовать свой тип кисти: эллипсы будем закрашивать градиентной кистью, сектора - сплошной, а прямоугольники - узорной. Цвет фигуры, ее размеры и положение будем выбирать случайным образом. Рисование фигур будет инициироваться в обработчике события Click. При каждом щелчке кнопкой мыши на форме будут рисоваться три новых экземпляра фигур каждого типа. В отличие от кривых Безье, старые фигуры стираться не будут.

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

А теперь приведем программный код, реализующий рисование. Начнем, как обычно, с полей класса:

//fields int cx,cy; Graphics graph; Brush brush; Color color; Random rnd;

Инициализация полей производится в методе MyInit, вызываемом конструктором класса:


Рис. 24.15. Рисование кистями разного типа

void MyInit() { cx = ClientSize.Width; cy = ClientSize.Height; graph = CreateGraphics(); rnd = new Random(); }

Рассмотрим теперь основной метод, реализующий рисование фигур различными кистями:

void DrawShapes() { for(int i=0; i<3; i++) { //выбирается цвет - красный, желтый, голубой int numcolor = rnd.Next(3); switch (numcolor) { case 0: color = Color.Blue; break; case 1: color = Color.Yellow; break; case 2: color = Color.Red; break; } //градиентной кистью рисуется эллипс, //местоположение случайно Point top = new Point(rnd.Next(cx), rnd.Next(cy)); Size sz = new Size(rnd.Next(cx-top.X), rnd.Next(cy-top.Y)); Rectangle rct = new Rectangle(top, sz); Point bottom = top + sz; brush = new LinearGradientBrush(top, bottom, Color.White,color); graph.FillEllipse(brush,rct); //сплошной кистью рисуется сектор, //местоположение случайно top = new Point(rnd.Next(cx), rnd.Next(cy)); sz = new Size(rnd.Next(cx-top.X), rnd.Next(cy-top.Y)); rct = new Rectangle(top, sz); brush = new SolidBrush(color); graph.FillPie(brush,rct,30f,60f); //узорной кистью рисуется прямоугольник, //местоположение случайно top = new Point(rnd.Next(cx), rnd.Next(cy)); sz = new Size(rnd.Next(cx-top.X), rnd.Next(cy-top.Y)); rct = new Rectangle(top, sz); HatchStyle hs = (HatchStyle)rnd.Next(52); brush = new HatchBrush(hs,Color.White, Color.Black); graph.FillRectangle(brush,rct); } }

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

brush = new LinearGradientBrush(top, bottom, Color.White,color);

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

Наиболее просто задается сплошная кисть:

brush = new SolidBrush(color);

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

HatchStyle hs = (HatchStyle)rnd.Next(52);brush = new HatchBrush(hs,Color.White, Color.Black);

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

Непосредственное рисование кистью осуществляют методы группы Fill:

 

graph.FillEllipse(brush,rct);graph.FillPie(brush,rct,30f,60f);graph.FillRectangle(brush,rct);

Первый аргумент всегда задает кисть, а остальные зависят от типа рисуемой фигуры. Как правило, всегда задается прямоугольник, ограничивающий данную фигуру.

Вызов метода DrawShapes, как уже говорилось, встроен в обработчик события Click формы RandomShapes:

private void RandomShapes_Click(object sender, System.EventArgs e){ DrawShapes();}


<== предыдущая лекция | следующая лекция ==>
Layer 2 Tunneling Protocol | Паутина Безье


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


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

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

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


 


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

 
 

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

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