netlib.narod.ru< Назад | Оглавление | Далее >

Ошибка смещения на 1 пиксел

Теперь, когда мы изучили все методы рисования прямоугольников и эллипсов, пора сравнить их с точки зрения ошибки смещения на 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));
      }
  }

Вот как выглядит результат, если увеличить его до размера, пригодного для анализа:


Рис. 5.15.

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


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz