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 | < Назад | Оглавление | Далее > |