logo
CSharp_Graphics

Рисование фигур и изображений и управление ими

После создания объекта Graphics его можно использовать для рисования линий и фигур, отображения текста или изображения и управления ими. Ниже представлены основные объекты, используемые с объектом Graphics.

Использование созданного объекта Graphics

Создание пера

В этом примере создается объект Pen.

Пример

-------

Надежное программирование

После завершения использования объектов, которые потребляют ресурсы системы, например объектов Pen, необходимо вызвать для этих объектов метод Dispose.

How to: Set the Color of a Pen

This example changes the color of a pre-existing Pen object

Example

myPen.Color = System.Drawing.Color.PeachPuff;

Compiling the Code

This example requires:

Robust Programming

You should call Dispose on objects that consume system resources (such as Pen objects) after you are finished using them.

How to: Create a Solid Brush

This example creates a SolidBrush object that can be used by a Graphics object for filling shapes.

Example

System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);

System.Drawing.Graphics formGraphics;

formGraphics = this.CreateGraphics();

formGraphics.FillEllipse(myBrush, new Rectangle(0, 0, 200, 300));

myBrush.Dispose();

formGraphics.Dispose();

Robust Programming

After you have finished using them, you should call Dispose on objects that consume system resources, such as brush objects.

Установка цвета фона для пера

В этом примере для уже созданного объекта Pen задается цвет.

Пример

------

Компиляция кода

Для этого примера требуются следующие компоненты.

Надежное программирование

После завершения использования объектов, которые потребляют ресурсы системы, например объектов Pen, необходимо вызвать для этих объектов метод Dispose.

Создание сплошной кисти

Этот пример создает объект SolidBrush, который может использоваться объектом Graphics для заливки фигур.

Пример

------

Надежное программирование

После завершения использования объектов, которые потребляют ресурсы системы, например объектов кистей, необходимо вызвать для этих объектов метод Dispose.

How to: Draw a Line on a Windows Form

This example draws a line on a form.

Example

System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red);

System.Drawing.Graphics formGraphics;

formGraphics = this.CreateGraphics();

formGraphics.DrawLine(myPen, 0, 0, 200, 200);

myPen.Dispose();

formGraphics.Dispose();

Compiling the Code

You cannot call this method in the Load event handler. The drawn content will not be redrawn if the form is resized or obscured by another form. To make your content automatically repaint, you should override the OnPaint method.

Robust Programming

You should always call Dispose on any objects that consume system resources, such as Pen and Graphics objects.

Рисование линии в Windows Forms

В этом примере на форме рисуется линия.

Пример

------

Компиляция кода

Этот метод нельзя вызывать в обработчике события Load. Если размер формы был изменен или форма была скрыта другой формой, рисунок перерисовываться не будет. Чтобы выполнять перерисовку автоматически, нужно переопределить метод OnPaint.

Надежное программирование

Для любого объекта, потребляющего системные ресурсы (например для объектов Pen и Graphics), всегда нужно вызывать метод Dispose.

How to: Draw an Outlined Shape

This example draws outlined ellipses and rectangles on a form.

Example

private void DrawEllipse()

{

System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red);

System.Drawing.Graphics formGraphics;

formGraphics = this.CreateGraphics();

formGraphics.DrawEllipse(myPen, new Rectangle(0, 0, 200, 300));

myPen.Dispose();

formGraphics.Dispose();

}

private void DrawRectangle()

{

System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red);

System.Drawing.Graphics formGraphics;

formGraphics = this.CreateGraphics();

formGraphics.DrawRectangle(myPen, new Rectangle(0, 0, 200, 300));

myPen.Dispose();

formGraphics.Dispose();

}

Compiling the Code

You cannot call this method in the Load event handler. The drawn content will not be redrawn if the form is resized or obscured by another form. To make your content automatically repaint, you should override the OnPaint method.

Robust Programming

You should always call Dispose on any objects that consume system resources, such as Pen and Graphics objects.

Рисование линии или контурной фигуры

В этом примере на форме рисуются контуры эллипса и прямоугольника.

Пример

-------

Компиляция кода

Этот метод нельзя вызывать в обработчике события Load. Если размер формы был изменен или форма была скрыта другой формой, рисунок перерисовываться не будет. Чтобы выполнять перерисовку автоматически, нужно переопределить метод OnPaint.

Надежное программирование

Для любого объекта, потребляющего системные ресурсы (например для объектов Pen и Graphics), всегда нужно вызывать метод Dispose.

How to: Draw a Filled Rectangle on a Windows Form

This example draws a filled rectangle on a form.

Example

System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);

System.Drawing.Graphics formGraphics;

formGraphics = this.CreateGraphics();

formGraphics.FillRectangle(myBrush, new Rectangle(0, 0, 200, 300));

myBrush.Dispose();

formGraphics.Dispose();

Compiling the Code

You cannot call this method in the Load event handler. The drawn content will not be redrawn if the form is resized or obscured by another form. To make your content automatically repaint, you should override the OnPaint method.

Robust Programming

You should always call Dispose on any objects that consume system resources, such as Brush and Graphics objects.

Рисование заполненного прямоугольника в Windows Forms

В этом примере на форме рисуется залитый прямоугольник.

Пример

--------

Компиляция кода

Этот метод нельзя вызывать в обработчике события Load. Если размер формы был изменен или форма была скрыта другой формой, рисунок перерисовываться не будет. Чтобы выполнять перерисовку автоматически, нужно переопределить метод OnPaint.

Надежное программирование

Для любого объекта, потребляющего системные ресурсы (например для объектов Brush и Graphics), всегда нужно вызывать метод Dispose.

How to: Draw a Filled Ellipse on a Windows Form

This example draws a filled ellipse on a form.

Example

System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);

System.Drawing.Graphics formGraphics;

formGraphics = this.CreateGraphics();

formGraphics.FillEllipse(myBrush, new Rectangle(0, 0, 200, 300));

myBrush.Dispose();

formGraphics.Dispose();

Compiling the Code

You cannot call this method in the Load event handler. The drawn content will not be redrawn if the form is resized or obscured by another form. To make your content automatically repaint, you should override the OnPaint method.

Robust Programming

You should always call Dispose on any objects that consume system resources, such as Brush and Graphics objects.

Рисование заполненного эллипса в Windows Forms

В этом примере на форме рисуется заполненный эллипс.

Пример

-----

Компиляция кода

Этот метод нельзя вызывать в обработчике события Load. Если размер формы был изменен или форма была скрыта другой формой, рисунок перерисовываться не будет. Чтобы выполнять перерисовку автоматически, нужно переопределить метод OnPaint.

Надежное программирование

Для любого объекта, потребляющего системные ресурсы (например для объектов Brush и Graphics), всегда нужно вызывать метод Dispose.

How to: Draw Text on a Windows Form

The following code example shows how to use the DrawString method of the Graphics to draw text on a form. Alternatively, you can use TextRenderer for drawing text on a form.

Example

public void DrawString()

{

System.Drawing.Graphics formGraphics = this.CreateGraphics();

string drawString = "Sample Text";

System.Drawing.Font drawFont = new System.Drawing.Font("Arial", 16);

System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);

float x = 150.0F;

float y = 50.0F;

System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat();

formGraphics.DrawString(drawString, drawFont, drawBrush, x, y, drawFormat);

drawFont.Dispose();

drawBrush.Dispose();

formGraphics.Dispose();

}

Compiling the Code

You cannot call the DrawString method in the Load event handler. The drawn content will not be redrawn if the form is resized or obscured by another form. To make your content automatically repaint, you should override the OnPaint method.

Robust Programming

The following conditions may cause an exception:

Отрисовка текста в Windows Forms

В следующем примере показано, как использовать метод DrawString класса Graphics для отрисовки текста на форме. Для вывода текста на форму можно также использовать объект TextRenderer.

Пример

--------

Компиляция кода

Метод DrawString нельзя вызывать в обработчике события Load. Если был изменен размер формы или форма была скрыта другой формой, рисунок перерисовываться не будет. Чтобы выполнять перерисовку автоматически, нужно переопределить метод OnPaint.

Надежное программирование

Исключение может возникнуть при следующих условиях.

How to: Draw Vertical Text on a Windows Form

The following code example shows how to draw vertical text on a form by using the DrawString method of Graphics.

Example

public void DrawVerticalString()

{

System.Drawing.Graphics formGraphics = this.CreateGraphics();

string drawString = "Sample Text";

System.Drawing.Font drawFont = new System.Drawing.Font("Arial", 16);

System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);

float x = 150.0F;

float y = 50.0F;

System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat();

drawFormat.FormatFlags = StringFormatFlags.DirectionVertical;

formGraphics.DrawString(drawString, drawFont, drawBrush, x, y, drawFormat);

drawFont.Dispose();

drawBrush.Dispose();

formGraphics.Dispose();

}

Compiling the Code

You cannot call this method in the Load event handler. The drawn content will not be redrawn if the form is resized or obscured by another form. To make your content automatically repaint, you should override the OnPaint method.

Robust Programming

The following conditions may cause an exception:

Рисование текста по вертикали в Windows Forms

В следующем примере кода показано, как с помощью метода DrawString класса Graphics рисовать на форме текст по вертикали.

Пример

-----

Компиляция кода

Этот метод нельзя вызывать в обработчике события Load. Если размер формы был изменен или форма была скрыта другой формой, рисунок перерисовываться не будет. Чтобы выполнять перерисовку автоматически, нужно переопределить метод OnPaint.

Надежное программирование

Исключение может возникнуть при следующих условиях.

How to: Render Images with GDI+

You can use GDI+ to render images that exist as files in your applications. You do this by creating a new object of an Image class (such as Bitmap), creating a Graphics object that refers to the drawing surface you want to use, and calling the DrawImage method of the Graphics object. The image will be painted onto the drawing surface represented by the graphics class. You can use the Image Editor to create and edit image files at design time, and render them with GDI+ at run time.

To render an image with GDI+

  1. Create an object representing the image you want to display. This object must be a member of a class that inherits from Image, such as Bitmap or Metafile. An example is shown:

    // Uses the System.Environment.GetFolderPath to get the path to the

    // current user's MyPictures folder.

    Bitmap myBitmap = new Bitmap

    (System.Environment.GetFolderPath

    (System.Environment.SpecialFolder.MyPictures));

  2. Create a Graphics object that represents the drawing surface you want to use.

    // Creates a Graphics object that represents the drawing surface of

    // Button1.

    Graphics g = Button1.CreateGraphics();

  3. Call the DrawImage of your graphics object to render the image. You must specify both the image to be drawn, and the coordinates where it is to be drawn.

g.DrawImage(myBitmap, 1, 1);

Вывод изображений с использованием GDI+

GDI+ можно использовать для вывода изображений, которые существуют в приложении в качестве файлов. Это осуществляется путем создания объекта класса Image (например объекта Bitmap), создания объекта Graphics, который ссылается на поверхность рисования, и вызова метода DrawImage объекта Graphics. Изображение будет выведено на поверхность рисования, предоставленную графическим классом. С помощью редактора изображений можно создавать и редактировать файлы изображений в режиме разработки и отображать их с использованием GDI+ в режиме выполнения.

Вывод изображения с помощью GDI+

  1. Создайте объект, представляющий изображение для вывода. Этот объект должен быть членом класса, наследуемого от Image, например Bitmap или Metafile. Ниже приведен пример.

------

  1. Создайте объект Graphics, представляющий поверхность рисования для использования.

----

  1. Вызовите метод DrawImage графического объекта, чтобы вывести изображение. Следует указать изображение и координаты для его отображения.

------

How to: Create a Shaped Windows Form

This example gives a form an elliptical shape that resizes with the form.

Example

protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)

{

System.Drawing.Drawing2D.GraphicsPath shape = new System.Drawing.Drawing2D.GraphicsPath();

shape.AddEllipse(0, 0, this.Width, this.Height);

this.Region = new System.Drawing.Region(shape);

}

Compiling the Code

This example requires:

This example overrides the OnPaint method to change the shape of the form. To use this code, copy the method declaration as well as the drawing code inside the method.