Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Извините за тупой вопрос. У меня при сборке Вашего примера выходит ошибка: "undefined reference to gluLookAt". Не могу найти в какой библиотеке находится эта функция. У меня задано: -lGL -lglut ... Искал в /usr/lib таким образом: nm lib*so* | grep...
Здравствуйте. Спасибо за проект. У меня вопрос, по какой причине определение принадлежности точки многоугольнику работает некорректно, если координаты из больших чисел состоят, например: int[] vertex = new int[] {...
Сейчас проверила нашла причину не запускания // Создание контекста воспроизведения OpenGL и привязка его к панели на форме OpenGLControl1:=TOpenGLControl.Create(Self); with OpenGLControl1 do begin Name:='OpenGLControl1'; //вот тут...
Ну..кажется что то пошло не так http://pp.usera...

Счетчики и рейтинг

Рейтинг@Mail.ru
Среда программирования: 
Microsoft C#

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

  • System.Drawing.Drawing2D,
  • System.Drawing.Imaging,
  • System.Drawing.Text

обеспечивают дополнительные функциональные возможности.

Класс Graphics предоставляет методы рисования на устройстве отображения.
Такие классы, как Rectangle и Point, инкапсулируют элементы GDI+.
Класс Pen используется для рисования линий и кривых, а классы, производные от абстрактного класса Brush, используются для заливки фигур.

Класс - Graphics

Инкапсулирует поверхность рисования GDI+. Этот класс не наследуется.

Методов в этом классе огромное количество, поэтому рассмотрим некоторые из них:

Имя
Описание
AddMetafileComment Добавляет комментарий к текущему объекту Metafile.
BeginContainer() Сохраняет графический контейнер, содержащий текущее состояние данного объекта Graphics, а затем открывает и использует новый графический контейнер.
BeginContainer(Rectangle, Rectangle, GraphicsUnit) Сохраняет графический контейнер, содержащий текущее состояние данного объекта Graphics, а также открывает и использует новый графический контейнер с указанным преобразованием масштаба.
BeginContainer(RectangleF, RectangleF, GraphicsUnit) Сохраняет графический контейнер, содержащий текущее состояние данного объекта Graphics, а также открывает и использует новый графический контейнер с указанным преобразованием масштаба.
Clear Очищает всю поверхность рисования и выполняет заливку поверхности указанным цветом фона.
CopyFromScreen(Point, Point, Size) Выполняет передачу данных о цвете, соответствующих прямоугольной области пикселей, блоками битов с экрана на поверхность рисования объекта Graphics.
CopyFromScreen(Point, Point, Size, CopyPixelOperation) Выполняет передачу данных о цвете, соответствующих прямоугольной области пикселей, блоками битов с экрана на поверхность рисования объекта Graphics.
CopyFromScreen(Int32, Int32, Int32, Int32, Size) Выполняет передачу данных о цвете, соответствующих прямоугольной области пикселей, блоками битов с экрана на поверхность рисования объекта Graphics.
Dispose Освобождает все ресурсы, используемые данным объектом Graphics.
DrawArc(Pen, Rectangle, Single, Single) Рисует дугу, которая является частью эллипса, заданного структурой Rectangle.
DrawArc(Pen, Int32, Int32, Int32, Int32, Int32, Int32) Рисует дугу, которая является частью эллипса, заданного парой координат, шириной и высотой.
DrawArc(Pen, Single, Single, Single, Single, Single, Single) Рисует дугу, которая является частью эллипса, заданного парой координат, шириной и высотой.
DrawBezier(Pen, Point, Point, Point, Point) Рисует кривую Безье, определяемую четырьмя структурами Point.
DrawLine(Pen, Point, Point) Проводит линию, соединяющую две структуры Point.
DrawLine(Pen, Int32, Int32, Int32, Int32) Проводит линию, соединяющую две точки, задаваемые парами координат.
DrawLine(Pen, Single, Single, Single, Single) Проводит линию, соединяющую две точки, задаваемые парами координат.
DrawLines(Pen, Point[]) Рисует набор сегментов линий, которые соединяют массив структур Point.
DrawPath Рисует объект GraphicsPath.
DrawPie(Pen, Rectangle, Single, Single) Рисует сектор, который определяется эллипсом, заданным структурой Rectangle и двумя радиальными линиями.
DrawPie(Pen, Int32, Int32, Int32, Int32, Int32, Int32) Рисует сектор, определяемый эллипсом, который задан парой координат, шириной, высотой и двумя радиальными линиями.
DrawPie(Pen, Single, Single, Single, Single, Single, Single) Рисует сектор, определяемый эллипсом, который задан парой координат, шириной, высотой и двумя радиальными линиями.
DrawPolygon(Pen, Point[]) Рисует многоугольник, определяемый массивом структур Point.
DrawRectangle(Pen, Rectangle) Рисует прямоугольник, определяемый структурой Rectangle.
DrawRectangle(Pen, Int32, Int32, Int32, Int32) Рисует прямоугольник, который определен парой координат, шириной и высотой.
DrawRectangle(Pen, Single, Single, Single, Single) Рисует прямоугольник, который определен парой координат, шириной и высотой.
DrawRectangles(Pen, Rectangle[]) Рисует набор прямоугольников, определяемых структурами Rectangle.
DrawString(String, Font, Brush, PointF) Создает указываемую текстовую строку в заданном месте с помощью определяемых объектов Brush и Font.
DrawString(String, Font, Brush, PointF, StringFormat) Рисует заданную текстовую строку в заданном месте с помощью определяемых объектов Brush и Font, используя атрибуты форматирования заданного формата StringFormat.
DrawString(String, Font, Brush, Single, Single) Создает указываемую текстовую строку в заданном месте с помощью определяемых объектов Brush и Font.
Equals(Object) Определяет, равен ли заданный объект текущему объекту. (Унаследовано от Object.)
ExcludeClip(Rectangle) Обновляет вырезанную область данного объекта Graphics, чтобы исключить из нее часть, определяемую структурой Rectangle.
ExcludeClip(Region) Обновляет вырезанную область данного объекта Graphics, чтобы исключить из нее часть, определяемую структурой Region.
FillClosedCurve(Brush, Point[]) Заполняет внутреннюю часть замкнутой фундаментальной кривой, определяемой массивом структур Point.
FillClosedCurve(Brush, Point[], FillMode) Заполняет внутреннюю часть замкнутой фундаментальной сплайновой кривой, определяемой массивом структур Point, используя указанный режим заливки.
FillClosedCurve(Brush, Point[], FillMode, Single) Заполняет внутреннюю часть замкнутой фундаментальной кривой, определяемой массивом структур Point, используя указанные режим заливки и натяжение.
FillEllipse(Brush, Rectangle) Заполняет внутреннюю часть эллипса, определяемого ограничивающим прямоугольником, который задан структурой Rectangle.
FillEllipse(Brush, Int32, Int32, Int32, Int32) Заполняет внутреннюю часть эллипса, определяемого ограничивающим прямоугольником, заданным с помощью пары координат, ширины и высоты.
FillEllipse(Brush, Single, Single, Single, Single) Заполняет внутреннюю часть эллипса, определяемого ограничивающим прямоугольником, заданным с помощью пары координат, ширины и высоты.
FillPath Заполняет внутреннюю часть объекта GraphicsPath.
FillPie(Brush, Rectangle, Single, Single) Заполняет внутреннюю часть сектора, определяемого эллипсом, который задан структурой RectangleF, и двумя радиальными линиями.
FillPie(Brush, Int32, Int32, Int32, Int32, Int32, Int32) Заполняет внутреннюю часть сектора, определяемого эллипсом, который задан парой координат, шириной, высотой и двумя радиальными линиями.
FillPie(Brush, Single, Single, Single, Single, Single, Single) Заполняет внутреннюю часть сектора, определяемого эллипсом, который задан парой координат, шириной, высотой и двумя радиальными линиями.
FillPolygon(Brush, Point[]) Заполняет внутреннюю часть многоугольника, определяемого массивом точек, заданных структурами Point.
FillPolygon(Brush, Point[], FillMode) Заполняет внутреннюю часть многоугольника, определенного массивом точек, заданных структурами Point, используя указанный режим заливки.
FillRectangle(Brush, Rectangle) Заполняет внутреннюю часть прямоугольника, определяемого структурой Rectangle.
FillRectangle(Brush, Int32, Int32, Int32, Int32) Заполняет внутреннюю часть прямоугольника, который определен парой координат, шириной и высотой.
FillRectangle(Brush, Single, Single, Single, Single) Заполняет внутреннюю часть прямоугольника, который определен парой координат, шириной и высотой.
FillRectangles(Brush, Rectangle[]) Заполняет внутреннюю часть набора прямоугольников, определяемых структурами Rectangle.
FillRegion Заполняет внутреннюю часть объекта Region.
Flush() Вызывает принудительное выполнение всех отложенных графических операций и немедленно возвращается, не дожидаясь их окончания.
Flush(FlushIntention) Вызывает принудительное выполнение всех отложенных графических операций. При этом в соответствии с настройкой метод дожидается или не дожидается окончания операций для возврата.
Класс - Pen

Определяет объект, используемый для рисования прямых линий и кривых. Этот класс не наследуется.


Pen(Color) Инициализирует новый экземпляр класса Pen с указанным цветом.
Pen(Color, Single) Инициализирует новый экземпляр класса Pen с указанными свойствами Color и Width. (Width - устанавливает ширину пера Pen, в единицах объекта Graphics, используемого для рисования)
Класс - Brush

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

Это абстрактный базовый класс, который не может быть реализован.Для создания объекта "кисть" используются классы, производные от Brush, такие как SolidBrush, TextureBrush и LinearGradientBrush.

Пример:

private void pictureBox1_Click(object sender, EventArgs e)
        {
            //Выбираем перо "myPen" черного цвета Black
            //толщиной в 1 пиксель:
            Pen myWind = new Pen(Color.Black, 2);
            //Объявляем объект "g" класса Graphics и предоставляем
            //ему возможность рисования на pictureBox1:
            Graphics g = pictureBox1.CreateGraphics(); 
            // Создаем объекты для закрашивания фигур
            SolidBrush myCorp = new SolidBrush(Color.Black);
            SolidBrush myTrum = new SolidBrush(Color.Green);
            SolidBrush myTrub = new SolidBrush(Color.Gray);
            SolidBrush mySe = new SolidBrush(Color.Blue);
            // Закрашиваем фигуры
            g.FillRectangle(myTrub,300,125,75,75);
            g.FillRectangle(myTrub,480,125,75,75);
            g.FillPolygon(myCorp, new Point[] {
                new Point(100,300),new Point(700,300),
                new Point(700,300),new Point(600,400),
                new Point(600,400),new Point(200,400),
                new Point(200,400),new Point(100,300)
            } );
            g.FillRectangle(myTrum, 250, 200, 350, 100);
            int x = 50;
            int Radius = 50;
            // Море
            while (x <= pictureBox1.Width - Radius)
            {
                g.FillPie(mySe, 0 + x, 375, 50, 50,0, -180);
                x += 50;
            }
            // Окошки
            for (int y = 300; y <= 550; y += 50)
            {
                g.DrawEllipse(myWind, y, 240, 20, 20);
            }
 
        }

Комментарии

releyshic аватар
Опубликовано releyshic в 7. Ноябрь 2014 - 12:34.

Код не работал в VS2008, при нажатии на окно ничего не происходило
Потом увеличил в настройках Pictura рего размер и заработало
В чем дело тут?
Как сделать чтобы Размер окна PicturBox изменялся пропорционально размеру Окна программы?
Как сделать панель графических элементов (на основе стандартных элеменов управления VS), которые можно будет перетаскивать на Рабочее пространство (те.PicturBox) как например в MS Visio?

admin аватар
Опубликовано admin в 7. Ноябрь 2014 - 13:59.

Используйте у PictureBox Свойство Anchor (якоря) для привязки границ элемента к границам окна.

releyshic аватар
Опубликовано releyshic в 13. Ноябрь 2014 - 12:40.

Спасибо! Помогло )