| netlib.narod.ru | < Назад | Оглавление | Далее > |
Теперь, когда мы изучили все методы рисования прямоугольников и эллипсов, пора сравнить их с точки зрения ошибки смещения на 1 пиксел. Следующая программа рисует прямоугольники и эллипсы размером 4 × 4 при помощи шести методов: DrawRectangle, DrawRectangles, DrawEllipse, FillRectangle, FillRectangles и FillEllipse.
FourByFours.cs
//--------------------------------------------
// FourByFours.cs (C) 2001 by Charles Petzold
//--------------------------------------------
using System;
using System.Drawing;
using System.Windows.Forms;
class FourByFours: PrintableForm
{
public new static void Main()
{
Application.Run(new FourByFours());
}
public FourByFours()
{
Text = "Four by Fours";
}
protected override void DoPage(Graphics grfx, Color clr, int cx, int cy)
{
Pen pen = new Pen(clr);
Brush brush = new SolidBrush(clr);
grfx.DrawRectangle(pen, new Rectangle(2, 2, 4, 4));
grfx.DrawRectangles(pen, new Rectangle[]
{new Rectangle(8, 2, 4, 4)});
grfx.DrawEllipse(pen, new Rectangle(14, 2, 4, 4));
grfx.FillRectangle(brush, new Rectangle(2, 8, 4, 4));
grfx.FillRectangles(brush, new Rectangle[]
{new Rectangle(8, 8, 4, 4)});
grfx.FillEllipse(brush, new Rectangle(14, 8, 4, 4));
}
}
Вот как выглядит результат, если увеличить его до размера, пригодного для анализа:

Как видно, особенность методов DrawRectangle, DrawRectangles и DrawEllipse в том, что визуализированные ими фигуры на один пиксел выше и шире, чем должны быть, исходя из заданного размера. Кроме небольшого утолщения слева, фигуры, нарисованные методом FillEllipse, на один пиксел уже и ниже, чем фигуры размера 4 × 4 , нарисованные методами FillRectangle и FillRectangles.
| netlib.narod.ru | < Назад | Оглавление | Далее > |