Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Graphics.doc
Скачиваний:
20
Добавлен:
16.11.2019
Размер:
3.1 Mб
Скачать

Параметры качества

Объект Graphics содержит некоторые свойства, влияющие на качество отображаемых объектов. Например, можно установить значение свойства TextRenderingHint, чтобы указать способ сглаживания (если оно нужно), применяемый к тексту. К другим свойствам, влияющим на качество, относятся свойства SmoothingMode, CompositingMode, CompositingQuality и InterpolationMode.

В следующем примере рисуются два эллипса, один с режимом сглаживания AntiAlias, а второй — с режимом сглаживания HighSpeed:

-----

Преобразования

Объект Graphics поддерживает два преобразования (объемное и страничное), которые применяются ко всем объектам, отображаемым объектом Graphics. Любое аффинное преобразование можно хранить в объемном преобразовании. Аффинные преобразования — это масштабирование, поворот, отражение, наклон и сдвиг. Страничное преобразование может использоваться для масштабирования и преобразования единиц измерения (например точек в дюймы). Дополнительные сведения см. в разделе Системы координат и преобразования.

В приведенном ниже примере устанавливаются объемное и страничное преобразования объекта Graphics. В качестве объемного преобразования устанавливается поворот на 30 градусов. Страничное преобразование устанавливается таким образом, чтобы координаты, передаваемые второму методу DrawEllipse, измерялись в миллиметрах, а не в точках. В коде осуществляются два одинаковых вызова метода DrawEllipse. При вызове первого метода DrawEllipse применяется только объемное преобразование, а при вызове второго метода DrawEllipse применяются оба преобразования (объемное и страничное).

----------

The following illustration shows the two ellipses. Note that the 30-degree rotation is about the origin of the coordinate system (upper-left corner of the client area), not about the centers of the ellipses. Also note that the pen width of 1 means 1 pixel for the first ellipse and 1 millimeter for the second ellipse.

Clipping Region

A Graphics object maintains a clipping region that applies to all items drawn by that Graphics object. You can set the clipping region by calling the SetClip method.

The following example creates a plus-shaped region by forming the union of two rectangles. That region is designated as the clipping region of a Graphics object. Then the code draws two lines that are restricted to the interior of the clipping region.

Graphics graphics = e.Graphics;

// Opaque red, width 5

Pen pen = new Pen(Color.Red, 5);

// Opaque aqua

SolidBrush brush = new SolidBrush(Color.FromArgb(255, 180, 255, 255));

// Create a plus-shaped region by forming the union of two rectangles.

Region region = new Region(new Rectangle(50, 0, 50, 150));

region.Union(new Rectangle(0, 50, 150, 50));

graphics.FillRegion(brush, region);

// Set the clipping region.

graphics.SetClip(region, CombineMode.Replace);

// Draw two clipped lines.

graphics.DrawLine(pen, 0, 30, 150, 160);

graphics.DrawLine(pen, 40, 20, 190, 150);

The following illustration shows the clipped lines.

Два нарисованных эллипса показаны на следующем рисунке. Следует отметить, что поворот на 30 градусов осуществляется относительно начала координат (верхний левый угол клиентской области), а не относительно центров эллипсов. Также обратите внимание, что толщина пера, равная 1, означает 1 точку при рисовании первого эллипса, а при рисовании второго эллипса это 1 миллиметр.

-----