Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Линии, прямоугольники, эллипсы
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; Просмотров: 412; Нарушение авторского права страницы