Программирование
Веб программирование

Пример использования графики [C#]

 
 

Привет всем!

Пространство имен System.Drawing обеспечивает доступ к функциональным возможностям графического интерфейса GDI+ Windows.  Класс Graphics предоставляет методы рисования на устройстве отображения. 

Рассмотрим пример использования графических возможностей С# для метода DrawLine класса Graphics .

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

Рисование в pictureBox имеет то преимущество, что при сворачивании формы прорисованные объекты сохраняются. Если же рисовать непосредственно в поле формы, то этого не происходит.

  1. Создадим новый проект Windows Form
  2. Поместим на форме два контролла из панели инструментов: кнопку Button1 и  окно для рисунка pictureBox1. Начальное положение и размеры этих объектов могут быть произвольными, далее программно мы их «причешем».
  3. Создадим в нашем коде функцию загрузки формы, для этого в конструкторе формы дважды щелкнем мышкой на поле формы – создастся процедура private void Form1_Load(object sender, System.EventArgs e)
  4. Создадим в нашем коде функцию- события одного щелчка по кнопке  Button1, для этого в конструкторе формы дважды щелкнем мышкой на этой кнопке – создастся процедура private void button1_Click(object sender, EventArgs e).
  5. Создадим в нашем коде функцию- события рисования pictureBox1, для этого в конструкторе формы правой кнопкой мышки щелкнем на pictureBox1 и выберем «Свойства». В свойства pictureBox1 выберм вкладку «События» и выберм событие Paint, дважды щелкнем мышкой на этом элементе списка – создастся процедура private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
  6. Далее дописываем код, как показано ниже. Все действия в программе откомментированы, надеюсь все понятно.
  7. Ключевой строчкой в коде является:
  8. pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
  9. Она связывает событие рисования на pictureBox1 с процедурой pictureBox1_Paint.
  10. Запускаем проект на выполнение и кликаем по кнопке «Построить».

Листинг программы:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
// Пространство имен для графики, эта строчка вставляется автоматически при создании проекта.
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

       float[] x = { 100.78F, 50.12F, 200.99F };  // Массив х-кординат треугольника
       float[] y = { 100.45F, 200.77F, 300.18F }; // Массив y-кординат треугольника

        private void Form1_Load(object sender, System.EventArgs e)
        {
            // Задаем размер нашей формы
            this.Height = 700;
            this.Width = 900;

            // Задаем положение pictureBox1, координаты левого верхнего угла относительно формы
            this.pictureBox1.Location = new System.Drawing.Point(40, 40);

            // Задаем размер pictureBox1
            this.pictureBox1.Width = 600;
            this.pictureBox1.Height = 500;

            // Помещаем кнопку button1 в нижний правый угол формы
            this.button1.Left = this.Width - this.button1.Width - 10;
            this.button1.Top = this.Height - this.button1.Height-40;
            this.button1.Text = "Построить";
        }

        private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            // Создаем локальную версию графического объекта для PictureBox
            Graphics g = e.Graphics;

            // Прорисовка отрезков сторон треугольника
            g.DrawLine(Pens.Red, x[0], y[0], x[1], y[1]);
            g.DrawLine(Pens.Red, x[1], y[1], x[2], y[2]);
            g.DrawLine(Pens.Red, x[0], y[0], x[2], y[2]);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            pictureBox1.BackColor = Color.White;
            pictureBox1.Visible = true;

            // Connect the Paint event of the PictureBox to the event handler method.
            pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
        }
    }
}

Есть вопросы? Спроси на нашем форуме!!
Coolhacker770 [06.03.2013 11:39]

Я вам код подсветил и некоторые неточности поправил.

Теперь разбор полетов:
Увидимши комментарий на аглицком (void button1_Click()), я задался вопросом: ваш ли это код?

Ежели не ваш - публикация чужого кода, в принципе, не запрещена, если вы будете следовать правилам, установленным владельцем кода, а также укажете источник. Прошу ответить в комментарии.

pjp07190 [06.03.2013 12:13]

Код мой. Строчка с комментарием взята из другого примера.

pjp07190 [07.03.2013 08:28]

Amin, вот видите, это никому не интересно. А если вы напишите код, взламывающий, скажем почтовый ящик, интересующиеся сразу проявятся... Причем в существе кода они и разбираться не будут - главное результат!

EverybodyLies280 [07.03.2013 10:43]

pjp07, деградирует население :)

Progers300 [15.03.2013 15:11]

Если кому-то это будет интересно,то он обязан написать комментарии?И если тебе так хочется взламывать(и фигней страдать) то иди взламывай!



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.