Разделы презентаций


Графика

Содержание

Важные пространства имен

Слайды и текст этой презентации

Слайд 1Графика
GDI+

ГрафикаGDI+

Слайд 2Важные пространства имен

Важные пространства имен

Слайд 3Типы System.Drawing (I)

Типы System.Drawing (I)

Слайд 4Типы System.Drawing (II)

Типы System.Drawing (II)

Слайд 5Перечисленения System.Drawing

Перечисленения System.Drawing

Слайд 6Тип Point (PointF)
namespace DrawingUtilTypes
{
using System;
using System.Drawing; // Это пространство имен нужно

для работы с типами GDI+

public class UtilTypes
{
public static

int Main(string[] args)
{
Point pt = new Point(100, 72); // Создаем точку, а затем смещаем ее

System.Console.WriteLine(pt);
pt.Offset(20, 20);
System.Console.WriteLine(pt);

Point pt2 = pt; // Применяем перегруженные операторы Point

if (pt = = pt2) Console.WriteLine("Points are the same");
else Console.WriteLine("Different points");

pt2.X = 4000; // Меняем значение координаты X для pt2

// А теперь выводим информацию о координатах каждой точки:
Console.WriteLine("First point: {0}", pt.ToString());
Console.WriteLine("Second point: {0}", pt2.ToString());
return 0;
}
}
}
Тип Point (PointF)namespace DrawingUtilTypes{using System;using System.Drawing;	// Это пространство имен нужно для работы с типами GDI+ public class

Слайд 7Члены класса Point (PointF)

Члены класса Point (PointF)

Слайд 8Члены класса Rectangle (RectangleF)

Члены класса Rectangle (RectangleF)

Слайд 9Работа метода Contains()
public static int Main(string[] args)
{
...
Rectangle r1 = new

Rectangle(0, 0, 100, 100);
Point pt3 = new Point(101, 101);

if (r1.Contains(pt3))
Console.WriteLine("Point

is within the rect!");
else
Console.WriteLine("Point is not within the rect!");

// Теперь помещаем точку внутрь области прямоугольника
pt3.X = 50;
pt3.Y = 30;

if (r1.Contains(pt3))
Console.WriteLine("Point is within the rect!");
else
Console.WriteLine("Point is not within the rect!");

return 0;
}
Работа метода Contains()public static int Main(string[] args){	...	Rectangle r1 = new Rectangle(0, 0, 100, 100);	Point pt3 = new

Слайд 10Члены класса Size (SizeF)

Члены класса Size (SizeF)

Слайд 11Методы класса Region

Методы класса Region

Слайд 12Сеансы вывода графики (1)
public class MainForm : Form
{
public MainForm()

{
CenterToScreen();
this.Text = "Basic Paint Form";
}

public static void Main(string[]

args)
{
Application.Run(new MainForm());
}

protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawString("HelloGDI+", new Font("Times New Roman", 20),
new SolidBrush(Color.Black), 0, 0);
}
}
Сеансы вывода графики (1)public class MainForm : Form{ public MainForm() {	CenterToScreen();	this.Text =

Слайд 13Сеансы вывода графики (вариант 2)
public class MainForm : Form
{
public

MainForm()
{
...
// Добавляем обработчик события
this.Paint +=

new System.Windows.Forms.PaintEventHandler(MainForm_Paint);
}

// Обратите внимание на сигнатуру обработчика событий
public void MainForm_Paint( object sender, PaintEventArgs e )
{
Graphics g = e.Graphics;
...
}

public static void Main(string[] args)
{
Application.Run(new MainForm());
}
}
Сеансы вывода графики (вариант 2)public class MainForm : Form{ public MainForm() {	...	// Добавляем обработчик события

Слайд 14Как сделать клиентскую область вашего приложения недействительной
public class MainForm :

Form
{
...
private void MainForm_Paint(object sender, PaintEventArgs e)
{
Graphics g = g.Graphics;
// Логика

для вывода изображения
...
}

private void GetNewBitmap()
{
// Выводим окно диалога и получаем выбранное изображение
...
// А теперь перерисовываем клиентскую часть формы
Invalidate();
}
}
Как сделать клиентскую область вашего приложения недействительнойpublic class MainForm : Form{...	private void MainForm_Paint(object sender, PaintEventArgs e)	{		Graphics g

Слайд 15Указание области перерисовки
private void UpdateUpperArea()
{

Rectangle myRect = new Rectangle(0,0,75,150);
Invalidate(myRect);
}

Указание области перерисовки  private void UpdateUpperArea() {   	Rectangle myRect = new Rectangle(0,0,75,150); 	Invalidate(myRect);

Слайд 16Вывод графики вне события Paint
private void NainForm_MouseDown(object sender, MouseEventArgs e)
{
//

Получаем объект Graphics
Graphics g = Graphics.FromHwnd(this.Handle);

//

По щелчку мыши рисуем кружок
g.DrawEllipse(new Pen(Color.Green), e.X, e.Y, 10, 10);

}
Вывод графики вне события Paintprivate void NainForm_MouseDown(object sender, MouseEventArgs e){	// Получаем объект Graphics	Graphics g = Graphics.FromHwnd(this.Handle);

Слайд 17«Правильный» вывод графики
public class MainForm : System.Windows.Forms.Form
{
// Коллекция для

хранения координат всех кружков
private ArrayList myPts = new ArrayList();

...

private void NainForm_MouseDown(object sender, MouseEventArgs e)
{

// А теперь мы просто добавляем координаты указателя при щелчке
// в коллекцию и вызываем Invalidate()
myPts.Add(new Point(e.X, e.Y));
Invalidate();
}

private void MainForm_paint(object sender, PaintEventargs e)
{
Graphics g = e.Graphics;
g.DrawString("Hello CDI+", new Font("Times New Roman", 20),
new SolidBrush(Color,Black), 0, 0);

// Выводим все точки
foreach(Point p in myPts)
g.DrawEllipse(new Pen(Color.Green), p.X, p.Y, 10, 10);
}
}
«Правильный» вывод графикиpublic class MainForm : System.Windows.Forms.Form{ // Коллекция для хранения координат всех кружков private ArrayList myPts

Слайд 18Возможности класса Graphics
FromHdc(), FromHwnd(), FromImage() – статические методы, обеспечивают возможность

получения объекта Graphics из элемента управления или изображения
Clear() – заполняет

объект Graphics выбранным цветом, удаляя предыдущее содержимое
MeasureString() – возвращает структуру Size, представляющую границы блока текста
Возможности класса GraphicsFromHdc(), FromHwnd(), FromImage() – статические методы, обеспечивают возможность получения объекта Graphics из элемента управления или

Слайд 19Методы рисования класса Graphics
DrawArc(), DrawBezier(), DrawBeziers(), DrawCurve(), DrawEllipse(), DrawIcon(), DrawLine(),

DrawLines(), DrawPie(), DrawPath(), DrawRectangle(), DrawRectangles(), DrawString() – все это методы

вывода изображений

FillEllipse(), FillPath(), FillPie(), FillPolygon(), FillRectangle() – заполнение внутренних областей объектов
Методы рисования класса GraphicsDrawArc(), DrawBezier(), DrawBeziers(), DrawCurve(), DrawEllipse(), DrawIcon(), DrawLine(), DrawLines(), DrawPie(), DrawPath(), DrawRectangle(), DrawRectangles(), DrawString() –

Слайд 20Свойства класса Graphics
Clip, Graphics, clipBounds, VisibleClipBounds, IsClipEmpty, IsVisibleClipEmpty – позволяют

настроить параметры отсечения для объекта
Transform – для проведения преобразований координат
PageUnit,

PageScale, DpiX, DpiY – задают единицы измерения
SmoothingMode, PixelOffsetMode, TextRenderingHint – задают плавность пере-ходов для геометрических объектов и текста
CompositingMode, CompositingQuality – будет ли графический объект выводиться над фоном или будет происходить мешение с фоном
InterpolationMode – определяет интерполяцию между соседними точками
Свойства класса GraphicsClip, Graphics, clipBounds, VisibleClipBounds, IsClipEmpty, IsVisibleClipEmpty – позволяют настроить параметры отсечения для объектаTransform – для

Слайд 21Система координат по умолчанию
(0, 0)
X
Y

Система координат по умолчанию(0, 0)XY

Слайд 22Применение других единиц измерения
Свойству Graphics.PageUnit присваиваем значение из перечисления GraphicsUnit

Применение других единиц измеренияСвойству Graphics.PageUnit присваиваем значение из перечисления GraphicsUnit

Слайд 23Смена начала координат
private void MainForm_Paint(object sender, PaintEventsArgs e)
{
// Настраиваем единицы

измерения
e.Graphics.PageUnit = GraphicsUnit.Point;

// Настраиваем новую точку отсчета для системы координат


e.Graphics.TranslateTransform(100, 100);

// Код для вывода прямоугольника остается прежним
e.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0, 0, 100, 100);
}
Смена начала координатprivate void MainForm_Paint(object sender, PaintEventsArgs e){	// Настраиваем единицы измерения	e.Graphics.PageUnit = GraphicsUnit.Point;	// Настраиваем новую точку отсчета

Слайд 24Работа с цветом
// Один из множества предопределенных цветов
Color c =

Color.PapayaWhip

// Названия цветов – статические поля

Работа с цветом// Один из множества предопределенных цветовColor c = Color.PapayaWhip// Названия цветов – статические поля

Слайд 25Члены класса Color

Члены класса Color

Слайд 26Возможности класса ColorDialog
public class ColorDlgForm : System.Windows.Forms.Form
{
// Работаем с классом

ColorDialog
private System.Windows.Forms.ColorDialog colorDlg;
public ColorDlgForm()
{
colorDlg = new System.Windows.Forms.ColorDialog();
Text = "Click on

me to change the color";
this.MouseUp += new MouseEventHandler(this.ColorDlgForm_MouseUp);
}
...
private void ColorDlgForm_MouseUp(object sender, MouseEventArgs e)
{
if (colorDlg.ShowDialog() != DialogResult.Cancel)
{
currColor = colorDlg.Color;
this.BackColor = currColor;
// Выводим информацию о выбранном цвете
string strARGB = colorDlg.Color.ToString();
MessageBox.Show(strARGB, "Color is:");
}
}
}
Возможности класса ColorDialogpublic class ColorDlgForm : System.Windows.Forms.Form{	// Работаем с классом ColorDialog	private System.Windows.Forms.ColorDialog colorDlg;	public ColorDlgForm()	{		colorDlg = new System.Windows.Forms.ColorDialog();		Text

Слайд 27Работа со шрифтами
// Создаем объект Font, указывая имя шрифта и

его размер
Font f = new Font("Times New Roman", 12)

// Создаем

объект Font, указывая имя, размер и стиль
Font f2 = new Font("Arial", 20, FontStyle.Bold | FontStyle.Underline)

// public void DrawString(String, Font, Brush, Point)
g.DrawString("My string", new Font("Arial",24), new SolidBrush(Color.Black), new Point (0,0));

// public void DrawString(String, Font, Brush, float, float)
g.DrawString("Another string", f2, Brushes.Black,10,30);


Работа со шрифтами// Создаем объект Font, указывая имя шрифта и его размерFont f = new Font(

Слайд 28Семейства шрифтов
// Создаем объект FontFamily
FontFamily myFamily = new FontFamily("Verdana");

//

Передаем созданный нами объект как параметр
Font myFont = new Font(myFamily,

12);
e.Grapgics,DrawString("Hello",myFont,Brushes.Blue,10,10)

Члены типа FontFamily позволяют узнать различные типографские характеристики шрифта: GetCellAscent(), GetCellDescent(), GetEmHeigth(), GetLineSpacing(), GetName(), IsStyleAvailable()

Семейства шрифтов// Создаем объект FontFamily FontFamily myFamily = new FontFamily(

Слайд 29Приложение с возможностью выбора шрифта
public class FontForm: System.Windows.Forms.Form
{
private Timer timer;
private

int swellValue;
// Этот шрифт будет использоваться по умолчанию:
private string fontFace

= "WingDings";

public FontForm()
{
// Считаем, что система меню создана при помощи Visual Studio.IDE
InitializeComponents();

timer = new Timer();
Text = "Font App";
Width = 425; Height = 150;
BackColor = Color.Honeydew;
CenterToScreen();

// Настраиваем таймер
timer.Enabled = true; timer.Interval = 100;
timer.Tick += new EventHandler(FontForm_OnTimer);
}
}
Приложение с возможностью выбора шрифтаpublic class FontForm: System.Windows.Forms.Form{	private Timer timer;	private int swellValue;	// Этот шрифт будет использоваться по

Слайд 30Приложение с возможностью выбора шрифта
private void FontForm_OnTimer(object sender, EventArgs e)
{

// При каждом «тике» размер шрифта увеличивается

на 5
swellValue += 5;

// При достижении максимального размера уменьшаем размер до 0
if(swellValue >= 50)
swellValue = 0;

// Перерисовываем нужную нам прямоугольную область
Invalidate(new Rectangle(0, 0, ClientRectangle.Width, 100));
}
Приложение с возможностью выбора шрифтаprivate void FontForm_OnTimer(object sender, EventArgs e){    // При каждом «тике»

Слайд 31Приложение с возможностью выбора шрифта
private void FontForm_Paint(object sender, PaintEventsArgs e)
{
Graphics

g = e.Graphics;

// Размер шрифта будет меняться между 12 и

62 в зависимости от текущего значения swellValue
Font theFont = new Font(fontFace, 12 + swellValue);

string message = "Hello GDI+";

// Выводим сообщение по центру формы
float windowCenter = this.DisplayRectangle.Width/2;
SizeF stringSize = g.MeasureString(message, theFont);
float startPos = windowCenter - (stringSize.Width/2);

g.DrawString(message, theFont, new SolidBrush(Color.Blue), startPos, 10);
}
Приложение с возможностью выбора шрифтаprivate void FontForm_Paint(object sender, PaintEventsArgs e){	Graphics g = e.Graphics;// Размер шрифта будет меняться

Слайд 32Обработка команд меню
private void FormatFont_Clicked(object sender, EventArgs e)
{
cmiFontChecked.Checked =

false;

MenuItem miClicked = (MenuItem)sender;
fontFace = miClicked.Text.Remove(0,1);

if (fontFace == "Arial")
cmiFontChecked

= cmiArial;
else if (fontFace == "Times New Roman")
cmiFontChecked = cmiTimesNewRoman;
else if (fontFace == "WingDings")
cmiFontChecked = cmiWingDings;

cmiFontChecked.Checked = true;
Invalidate();
}
Обработка команд менюprivate void FormatFont_Clicked(object sender, EventArgs e) 	{		cmiFontChecked.Checked = false;		MenuItem miClicked = (MenuItem)sender;		fontFace = miClicked.Text.Remove(0,1);				if (fontFace

Слайд 33Информация об установленных шрифтах
public class FontForm : System.Windows.Forms.Form
{
// Для

хранения списка шрифтов
private string installedFonts;

// Обработчик события меню

для вывода списка установленных в системе шрифтов
private void mnuConfigShowFonts_Clicked(object sender, EventArgs e)
{
InstalledFontCollection fonts = new InstalledFontCollection();
for(int i=0; i < fonts.Families.Lenght; i++)
{
installedFonts += fonts.Families[i].Name + " ";
}

// На этот раз нам потребуется перерисовать всю клиентскую область
// формы, поскольку вывод полученных значений будет производиться в
// нижнюю часть формы
Invalidate();
}
...
}
Информация об установленных шрифтахpublic class FontForm : System.Windows.Forms.Form{ // Для хранения списка шрифтов private string installedFonts; //

Слайд 34Вывод информации в нижнюю часть формы
private void FontForm_Paint(object sender, PaintEventArgs

e)
{
Graphics g = g.Graphics;
Font theFont = new Font(fontFace, 12 +

swellValue);
string message = "Hello GDI+";

// Выводим сообщение "Hello GDI+" по центру формы
float windowCenter = this.DisplayRectangle.Width/2;
SizeF stringSize = g.MeasureString(message, theFont);
float startPos = windowCenter - (stringSize.Width/2);
g.DrawString(message, theFont, new SolidBrush(Color.Blue), startPos, 10);

// Выводим информацию об установленных шрифтах под занятой областью
Rectangle myRect = new Rectangle(0, 100, ClientRectangle.Width,
ClientRectangle.Height);

// Будем рисовать в этой области белым по черному
g.FillRectangle(newSolidBrush(Color.Black), myRect);
g.DrawString(installedFonts, new Font("Arial", 12), new SolidBrush(Color.White), myRect);
}
Вывод информации в нижнюю часть формыprivate void FontForm_Paint(object sender, PaintEventArgs e){	Graphics g = g.Graphics;	Font theFont = new

Слайд 35Обработка события Resize

private void FontForm_Resize(object sender, System.EventArgs e)
{
Rectangle myRect =

new Rectangle(0, 100,
ClientRectangle.Width, ClientRectangle.Height);
Invalidate(myRect);
}

Обработка события Resizeprivate void FontForm_Resize(object sender, System.EventArgs e){	Rectangle myRect = new Rectangle(0, 100, 	ClientRectangle.Width, ClientRectangle.Height); 	Invalidate(myRect);}

Слайд 36Класс FontDialog
public class FontDlgForm : System.Windows.Forms.Form
{
private System.Windows.Forms.FontDialog fontDlg;

private Font currFont;

// Обработчик события

Paint
private void FontDlgForm_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawString("Testing...", currFont, new SolidBrush(Color.Black), 0, 0);
}

public FontDlgForm()
{
CenterToScreen();
fontDlg = new System.Windows.Forms.FontDialog();
fontDlg.ShowHelp = true;
Text = "Click on me to change the font";
currFont = new Font("Times New Roman", 12);
...
}

// Обработчик события MouseUp
private void FontDlgForm_MouseUp(object sender, MouseEventArgs e)
{
if (fontDlg.ShowDialog() != DialogResult.Cancel)
{
currFont = fontDlg.Font;
Invalidate();
}
}
}
Класс FontDialogpublic class FontDlgForm : System.Windows.Forms.Form{  private System.Windows.Forms.FontDialog fontDlg;  private Font currFont;   //

Слайд 37Классы System.Drawing.Drawing2D

Классы System.Drawing.Drawing2D

Слайд 38Перечисления System.Drawing.Drawing2D

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

Слайд 39Определение качества вывода графического объекта
private void MainForm_Paint(object sender, PaintEventArgs e)
{

Graphics g = e.Graphics;

// Устанавливаем качество вывода графического

объекта

g.SmoothingMode = SmoothingMode.AntiAlias;

// Еще лучше – HighQuality
// Еще быстрее - HighSpeed


}
Определение качества вывода графического объектаprivate void MainForm_Paint(object sender, PaintEventArgs e){ Graphics g = e.Graphics;  // Устанавливаем

Слайд 40Рисование пером

Рисование пером

Слайд 41Некоторые свойства класса Pen

Некоторые свойства класса Pen

Слайд 42Работа с перьями
private void MainForm_Paint(object sender, PaintEventArgs e)
{
Graphics g

= e.Graphics;

// Создаем большое перо синего цвета
Pen bluePen

= new Pen(Color.Blue, 20);

// Создаем еще одно перо при помощи заготовок из коллекции Pens
Pen pen2 = Pens.Firebrick;

// Выводим при помощи созданных нами перьев геометрические фигуры
g.DrawEllipse(bluePen, 10, 10, 100, 100);
g.DrawLine(pen2, 10, 130, 110, 130);
g.DrawPie(Pens.Black, 150, 10, 120, 150, 90, 80);

// Выводим многоугольник пурпурного цвета
Pen pen3 = new Pen(Color.Purple, 5);
pen3.DashStyle = DashStyle.DashDotDot;
g.DrawPolygon(pen3, new Point[] { new Point (30, 140), new Point(265, 200),
new Point(100, 225), new Point(190, 190),
new Point(50, 330), new Point(20, 180),} );

// Добавляем прямоугольник со вписанным нами текстом
Rectangle r = new Rectangle(150, 10, 130, 60);
g.DrawRectangle(Pens.Blue, r);
g.DrawString("Hello out there...How are ya?", new Font("Arial", 12), Brushes.Black, r);
}
Работа с перьямиprivate void MainForm_Paint(object sender, PaintEventArgs e){ Graphics g = e.Graphics;	 // Создаем большое перо синего

Слайд 43Работаем с наконечниками перьев (Перечисление LineCap)

Работаем с наконечниками перьев (Перечисление LineCap)

Слайд 44Наконечники перьев
private void MainForm_Paint (object sender, PaintEventArgs e)
{
Graphics g

= e.Graphics;
Pen thePen = new Pen(Color.Black, 10);
int yOffSet

= 10;

// Получаем все значения перечисления LineCap
Array obj = Enum.GetValues(typeof(LineCap));

// Выводим линию с использованием значения из LineCap
for(int x = 0; x < obj.Length; x++)
{
// Настраиваем "наконечник" пера
LineCap temp = (LineCap)obj.GetValue(x);
thePen.StartCap = temp;
thePen.EndCap = temp;

// Выводим имя значения перечисления
g.DrawString(temp.ToString(), new Font("Times New Roman", 10),
new SolidBrush(Color.Black), 0, yOffSet);

// Выводим линию с выбранным наконечником
g.DrawLine(thePen, 100, yOffSet, Width - 50, yOffSet);
yOffSet += 40;
}
}
Наконечники перьевprivate void MainForm_Paint (object sender, PaintEventArgs e){ Graphics g = e.Graphics; Pen thePen = new Pen(Color.Black,

Слайд 45Работаем с кистью

Работаем с кистью

Слайд 46Работа с кистью
private void MainForm_Paint(object sender, PaintEventArgs e)
{
Graphics g =

e.Graphics;

// Создаем "плотную кисть" — SolidBrush — синего цвета
SolidBrush blueBrush = new

SolidBrush(Color.Blue);

// Создаем еще одну кисть при помощи заранее готовой коллекции Brushes
SolidBrush pen2 = (SolidBrush)Brushes.Firebrick;

// Закрашиваем этими кистями геометрические фигуры
g.FillEllipse(blueBrush, 10, 10, 100, 100);
g.FillPie(Brushes.Black, 150, 10, 120, 150, 90, 80);

// Закрашиваем многоугольник пурпурным цветом
SolidBrush brush3 = new SolidBrush(Color.Purple);

g.FillPolygon(brush3, new Point[]{ new Point(30, 140), new Point(265, 200),
new Point(100, 225), new Point(190, 190),
new Point(50, 330), new Point(20, 180)} );

// и прямоугольник с текстом — синим:
Rectangle r = new Rectangle(150, 10, 130, 60);
g.FillRectangle(Brushes.Blue, r);
g.DrawString("Hello out there...Now are ya?",
new Font("Arial", 12), Brushes.White, r);
}
Работа с кистьюprivate void MainForm_Paint(object sender, PaintEventArgs e){	Graphics g = e.Graphics;	// Создаем

Слайд 47Работаем со штриховыми кистями (Перечисление HatchStyle)

Работаем со штриховыми кистями (Перечисление HatchStyle)

Слайд 48Работаем со штриховыми кистями
private void MainForm_Paint(object sender, PaintEventArgs e)
{
Graphics

g = e.Graphics;
int yOffSet = 10;

// Помещаем в

массив все члены перечисления HatchStyle
Array obj = Enum.GetValues(typeof(HatchStyle));

// Выводим эллипс со штриховкой, соответствующей членам перечисления HatchStyle
// с 1 по 10
for(int x =0; x < 10; x++)
{
// Настраиваем кисть
HatchStyle temp = (HatchStyle)obj.GetValue(x);
HatchBrush theBrush = new HatchBrush(temp, Color.White, Color.Black);

// Выводим имя каждого из значений перечисления
g.DrawString(temp.ToString(), new Font("Times New Roman", 10),
new SolidBrush (Color.Black), 0, yOffSet);

// Закрашиваем эллипс штриховой кистью
g.FillEllipse(theBrush, 150, yOffSet, 200, 25);
yOffSet += 40;
}
}
Работаем со штриховыми кистямиprivate void MainForm_Paint(object sender, PaintEventArgs e){ Graphics g = e.Graphics; int yOffSet = 10;

Слайд 49Работаем с текстурными кистями
public class MainForm : System.Windows.Forms.Form
{
// Потребуются

переменные типа Brush для загрузки изображений
private Brush texturedTextBrush;
private

Vrush texturedBGroundBrush;

public MainForm()
{
...
// Загружаем изображение для текстуры формы
Image bGroundBrushImage = new Bitmap(Coluds.bmp");
texturedBGrounBrush = new TextureBrush(bBroundBrushImage);

// Загружаем изображение для текстуры теста
Image textBrushImage = new Bitmap("Soap Bubbles.bmp");
texturedTextBrush = new TextureBrush(textBrushImage);
}
...
}
Работаем с текстурными кистямиpublic class MainForm : System.Windows.Forms.Form{ // Потребуются переменные типа Brush для загрузки изображений 	private

Слайд 50Используем текстурные кисти
private void MainForm_Paint(object sender, PaintEventArgs e)
{
Graphics g

= e.Graphics;
Rectangle r = ClientRectangle;

// Выводим облака на

форме
g.FillRectangle(texturedBGroundBrush, r);

// Текст должен быть большим — чтобы можно было разглядеть текстуру
g.DrawString ("Bitmaps as brushes! Way cool...",
new Font("Arial", 60, FontStyle.Bold | FontStyle.Italic),
texturedTextBrush, r);
}
Используем текстурные кистиprivate void MainForm_Paint(object sender, PaintEventArgs e){ Graphics g = e.Graphics; Rectangle r = ClientRectangle; //

Слайд 51Работа с градиентными кистями
private void MainForm_Paint(object sender, PaintEventArgs e)
{
Graphics

g = e.Graphics;
Rectangle r = new Rectangle(10, 10, 100,

100);

LinearGradientBrush theBrush = null;
int yOffSet = 10;

// Получаем все значения перечисления LinearGradientMode
Array obj = Enum.GetValues(typeof(LinearGradientMode));

// Выводим прямоугольник, используя значения LinearGradientMode
for(int x = 0; x < obj.Length; x++)
{
// Настраиваем кисть
LinearGradientMode temp = (LinearGradientMode)obj.GetValue(x);
theBrush = new LinearGradientBrush(r, Color.Red, Color.Blue, temp);

// Выводим имя значения перечисления
g.DrawString(temp.ToString(), new Font("Times New Roman", 10),
new SolidBrush(Color.Black), 0, yOffSet);

// Заполняем прямоугольник при помощи градиентной кисти
g.FillRectangle(theBrush, 150, yOffSet, 200, 50);
yOffSet += 80;
}
}
Работа с градиентными кистямиprivate void MainForm_Paint(object sender, PaintEventArgs e){ Graphics g = e.Graphics; Rectangle r = new

Слайд 52Вывод изображений Члены класса Image

Вывод изображений Члены класса Image

Слайд 53Вывод изображений
public class mainForm : System.Windows.Forms.Form
{
// Объявляем переменные типа Image
private

Image bMapImageA;
private Image bMapImageB;
private Image bMapImageC;

public MainForm()
{
...
// Используем для этих

переменных объекты класса Bitmap
bMapImageA = new Bitmap("ImageA.bmp");
bMapImageB = new Bitmap("ImageB.bmp");
bMapImageC = new Bitmap("ImageC.bmp");
}
...
}
Вывод изображенийpublic class mainForm : System.Windows.Forms.Form{	// Объявляем переменные типа Image	private Image bMapImageA;	private Image bMapImageB;	private Image bMapImageC;	public MainForm()	{		...	//

Слайд 54Вывод изображений
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;

//

Выводим изображения
g.DrawImage(bMapImageA, 10, 10, 90, 90);
g.DrawImage(bMapImageB, rectB);
g.DrawImage(bMapImageC, rectC);

}

Вывод изображенийprivate void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e){	Graphics g = e.Graphics;	// Выводим изображения	g.DrawImage(bMapImageA, 10, 10, 90, 90);	g.DrawImage(bMapImageB, rectB);	g.DrawImage(bMapImageC,

Слайд 55Форматы изображений
// Тип Bitmap поддерживает все распространенные форматы!
Bitmap myBMP =

new Bitmap("CoffeeCup.bmp");
Bitmap myGIF = new Bitmap("Candy.gif");
Bitmap myJPEG = new Bitmap("Clock.jpg");
Bitmap

myPNG = new Bitmap("Speakers.png");
Bitmap myTIFF = new Bitmap("FooFighters.bmp");

// Выводим изображения при помощи Graphics.DrawImage()
g.DrawImage(myBmp, 10, 10);
g.DrawImage(myGIF, 220, 10);
g.DrawImage(myJPEG, 280, 10);
g.DrawImage(myPNG, 150, 200);
g.DrawImage(myTIFF, 300, 200);
Форматы изображений// Тип Bitmap поддерживает все распространенные форматы!Bitmap myBMP = new Bitmap(

Слайд 56Методы Add класса GraphicsPath
AddArc
AddBezier
AddBeziers
AddclosedCurves
AddCurve
AddEllipse
AddLine

AddLines
AddPAth
AddPie
AddPolygon
AddRectangle
AddRectangles
AddString

Методы Add класса GraphicsPathAddArcAddBezierAddBeziers AddclosedCurves	AddCurveAddEllipseAddLineAddLinesAddPAthAddPieAddPolygonAddRectangleAddRectanglesAddString

Слайд 57Построение пути
public MainForm : System.Windows.Forms.Form
{
// Создаем объект GraphicsPath
GraphicsPath

myPath = new GraphicsPath();

public MainForm()
{
// Добавляем в

объект GraphicsPath элементы, из которых он будет состоять
myPath.StartFigure();
myPath.AddLine(new Point(150, 10), new Point(120, 150));
myPath.AddArc(200, 200, 100, 100, 0, 90);
Point point1 = new Point(250, 250);
Point point2 = new Point(350, 275);
Point point3 = new Point(350, 325);
Point point4 = new Point(250, 350);
Point[] points = {point1, point2, point3, point4};
myPath.AddCurve(points);
myPath.CloseFigure();
...
}
}
Построение путиpublic MainForm : System.Windows.Forms.Form{ // Создаем объект GraphicsPath GraphicsPath myPath = new GraphicsPath(); public MainForm() {

Слайд 58Проверка попадания в фигуру
private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
//

Get (x, y) of mouse click.
Point mousePt = new

Point(e.X, e.Y);

// See if the mouse is anywhere in the 3 regions...
if (rectA.Contains(mousePt))
{
isImageClicked = true;
imageClicked = 0;
this.Text = "You clicked image A";
}

else if (myPath.IsVisible(mousePt))
{
isImageClicked = true;
imageClicked = 3;
this.Text = "You clicked the strange shape...";
}
else // Not in any shape, set defaults.
{
isImageClicked = false;
this.Text = "Images";
}

// Redraw the client area.
Invalidate();
}
Проверка попадания в фигуруprivate void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e){ // Get (x, y) of mouse click. Point

Слайд 59Выводим объект GraphicsPath
private void MainForm_Paint(object sender, PaintEventArgs e)
{
Graphics g =

e.Graphics;
...

// Выводим объект GraphicsPath
g.FillPath(Brushes.AliceBlue, myPath);

// Обводим этот объект рамкой (по

щелчку)
if(isImageClicked = = true)
{
Pen outline = new Pen(Color.red, 5);

switch(imageClicked)
{
...
case 3:
g.DrawPath(outline, myPath);
break;
default:
break;
}
}
}
Выводим объект GraphicsPathprivate void MainForm_Paint(object sender, PaintEventArgs e){	Graphics g = e.Graphics;	...	// Выводим объект GraphicsPath	g.FillPath(Brushes.AliceBlue, myPath);	// Обводим этот

Слайд 60Ресурсы
*.resx
*.resources

ResourceManager
ResourceWriter
ResourceReader

Ресурсы*.resx*.resourcesResourceManagerResourceWriterResourceReader

Слайд 61Что еще?
Элементы управления
Ввод/вывод и сериализация объектов
Взаимодействие с DLL, созданными на

С и VB 6.0
Доступ к данным ADO.NET
Разработка Web-приложений
Web-службы

Что еще?Элементы управленияВвод/вывод и сериализация объектовВзаимодействие с DLL, созданными на С и VB 6.0Доступ к данным ADO.NETРазработка

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика