Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Линии, прямоугольники, эллипсы



Graphics g = this.CreateGraphics(); // Создает графический объект и

// связываем его с формой

g.Clear(Color.White); // цвет фона задаем белым

// Рисуем линию определенного стиля

Pen pen1 = new Pen(Color.Blue, 3.0f); // создаем перо синего цвета и толщиной 3пик

pen1.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; // задаем стиль пера

g.DrawLine(pen1, 20, 120, 100, 60); // рисуем линию

 

// Рисуем закрашенный красный квадрат

SolidBrush sb1 = new SolidBrush(Color.Red); // задаем заливку

g.FillRectangle(sb1, 60, 30, 40, 40); // рисуем закрашенный квадрат

 

// Рисуем закрашенный прямоугольник и его окантовку

SolidBrush sb2 = new SolidBrush(Color.Yellow);

Pen pen2 = new Pen(Color.Aqua, 2.0f);

pen2.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;

g.FillRectangle(sb2, 90, 40, 60, 45);

g.DrawRectangle(pen2, 90, 40, 60, 45);

 

 

// Рисуем закрашенный эллипс

System.Drawing.Drawing2D.HatchBrush hb1 = new System.Drawing.Drawing2D.HatchBrush(System.Drawing.Drawing2D.HatchStyle.DiagonalCross, Color.Black, Color.Green);

g.FillEllipse(hb1, 30, 100, 65, 50);

 

// Рисуем наклонный эллипс

Pen pen3 = new Pen(Color.Fuchsia, 2.0f);

pen3.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot;

g.ResetTransform();

g.RotateTransform(45);

g.DrawEllipse(pen3, 70, -10, 100, 50);

 

Кардинальные сплайны (Cardinal Spline)

Graphics g = this.CreateGraphics();

g.Clear(Color.White);

Point point1 = new Point(0, 100);

Point point2 = new Point(50, 80);

Point point3 = new Point(100, 20);

Point point4 = new Point(150, 80);

Point point5 = new Point(200, 100);

Point[] curvePoints = {point1, point2, point3, point4, point5};

Pen pen = new Pen(System.Drawing.Color.Aquamarine, 2f);

g.DrawCurve(pen, curvePoints);

foreach (Point point in curvePoints)

g.FillRectangle(Brushes.Red, new Rectangle(point, new Size(5, 5)));

Анимированная надпись

На рисунке 1.1 представлена форма в процессе проектирования, на рисунке 1.2 – форма в процессе выполнения.

 

Рисунок 1.1 - Форма в процессе проектирования

 

Рисунок 1.2 - Форма в процессе выполнения

 

В листинге 1.1 представлены программные коды файла Form1.cs.

 

Листинг 1.1 - Программные коды файла Form1.cs

public partial class Form1: Form {

public Form1() {

InitializeComponent();

}

Graphics graphText;

static bool x = false;

void doAnimate() {

String str = " Рисунок";

graphText = pctText.CreateGraphics();

graphText.Clear(this.BackColor);

if (x) {

graphText.DrawString(str,

new Font(" Arial", 30.0f, FontStyle.Bold),

new SolidBrush(btnForeColor.ForeColor), new PointF());

x = false;

}

else x = true;

}

private void timer_Tick(object sender, EventArgs e) { doAnimate(); }

private void btnForeColor_Click(object sender, EventArgs e) {

colorDialog.Color = btnForeColor.ForeColor;

if (colorDialog.ShowDialog() == DialogResult.OK) {

btnForeColor.ForeColor = colorDialog.Color;

doAnimate();

}

}

private void btnRun_Click(object sender, EventArgs e) { timer.Start(); }

private void btnStop_Click(object sender, EventArgs e) { timer.Stop(); }

}

Результат работы

Далее представлен пример приложения.

 

На рисунке 1.3 представлена форма в процессе проектирования, на рисунке 1.4 – форма в процессе выполнения.

Рисунок 1.3 - Форма в процессе проектирования

 

 

Рисунок 1.4 - Форма в процессе выполнения

В листинге 1.2 представлены программные коды файла Form1.cs.

 

Листинг 1.2 - Программные коды файла Form1.cs

public partial class Form1: Form {

public Form1() { InitializeComponent(); }

 

static int a = 40;

// Функция вычисления значений координат

private void func(float f, int b, out float x, out float y) {

x = (float)((a * Math.Pow(Math.Cos(f), 2) - b * Math.Pow(Math.Sin(f), 2)) * Math.Cos(f));

y = (float)((a * Math.Pow(Math.Cos(f), 2) - b * Math.Pow(Math.Sin(f), 2)) * Math.Sin(f));

}

private void btnExit_Click(object sender, EventArgs e) {

Close();

}

private void scrb_Scroll(object sender, ScrollEventArgs e) {

lblb.Text=String.Concat(" b = ", (scrb.Value).ToString());

}

private void btnDraw_Click(object sender, EventArgs e) {

int b=scrb.Value;

float h = 0.05f, k_max = 0, tt, x1, y1, x2, y2;

// Определение масштаба

for(float f=0; f< =2*Math.PI; f=f+h) {

func(f, b, out x2, out y2);

if(f == 0) k_max=(x2> y2)? x2: y2;

else {

tt=(x2> y2)? x2: y2;

k_max=(tt> k_max)? tt: k_max;

}

}

int pict_size=(pctDraw.Width< pctDraw.Height)? pctDraw.Width: pctDraw.Height;

pict_size/=2;

// Подготовка к рисованию

Graphics g = pctDraw.CreateGraphics();

g.Clear(Color.White);

g.ScaleTransform(pict_size/(float)k_max, pict_size/(float)k_max);

g.TranslateTransform(pctDraw.Width/2, pctDraw.Height/2, System.Drawing.Drawing2D.MatrixOrder.Append);

Pen p = new Pen(Color.Black);

// Оси координат

g.DrawLine(p, -pctDraw.Width/2, 0, pctDraw.Width/2, 0);

g.DrawLine(p, 0, -pctDraw.Height/2, 0, pctDraw.Height/2);

// Рисование графика функции

p.Color=Color.Green;

func(0, b, out x1, out y1);

float xmax=0, ymax=0;

for(float f=h; f< =2*Math.PI+h; f=f+h) {

func(f, b, out x2, out y2);

g.DrawLine(p, x1, y1, x2, y2);

x1 = x2;

y1 = y2;

xmax=(x1> xmax)? x1: xmax;

ymax=(y1> ymax)? y1: ymax;

}

// Подпись осей координат

g.DrawString( (xmax).ToString(), new System.Drawing.Font(" Arial", 8), new SolidBrush(Color.Black), xmax, 0);

g.DrawString( (ymax).ToString(), new System.Drawing.Font(" Arial", 8), new SolidBrush(Color.Black), 0, -ymax);

}

}


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-13; Просмотров: 372; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.016 с.)
Главная | Случайная страница | Обратная связь