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

Заливка прямоугольников, эллипсов и секторов

Хотя некоторые из обсуждавшихся выше методов класса Graphics определяют замкнутые области, эти методы лишь прорисовывают заданным пером контуры области, не заполняя при этом ее внутреннюю часть. Этим методам, имена которых начинаются префиксом Draw, соответствуют методы с префиксом Fill, выполняющие заливку оконтуренных областей. Первый аргумент этих методов — объект Brush, используемый для заливки области.

Вот четыре версии метода FillRectangle:


Методы FillRectangle класса Graphics



void FillRectangle(Brush brush, int x, int y, int cx, int cy)
void FillRectangle(Brush brush, float x, float y, float cx, float cy)
void FillRectangle(Brush brush, Rectangle rect)
void FillRectangle(Brush brush, RectangleF rectf)


Ширина и высота результирующей фигуры определяется значениями аргументов метода. Например, если ширина и высота равны 3, вызов FillRectangle нарисует закрашенный квадрат со стороной 3 пиксела, верхний левый угол которого находится в пикселе с координатами (xy). Если требуется нарисовать и залить некоторый прямоугольник, первым надо вызвать метод FillRectangle, чтобы при заливке не были затерты никакие линии.

Класс Graphics также включает два метода FillRectangles:


Методы FillRectangles класса Graphics



void FillRectangles(Brush brush, Rectangle[] arect)
void FillRectangles(Brush brush, RectangleF[] arect)


Вызов метода FillRectangles дает тот же результат, что несколько вызовов FillRectangle.

Имеется четыре версии метода FillEllipse, их аргументы не отличаются от аргументов DrawEllipse:


Методы FillEllipse класса Graphics



void FillEllipse(Brush brush, int x, int y, int cx, int cy)
void FillEllipse(Brush brush, float x, float y, float cx, float cy)
void FillEllipse(Brush brush, Rectangle rect)
void FillEllipse(Brush brush, RectangleF rectf)


Метод FillEllipse работает несколько иначе, чем все методы, о которых говорилось до сих пор. Предположим, что задан эллипс с центром в точке (0, 0), высотой и шириной 20. Как известно, DrawEllipse нарисует фигуру; состоящую по горизонтали и вертикали из пикселов от 0 до 20, Таким образом, действительная высота и ширина фигуры составит 21 пиксел.

Область, закрашиваемая FillEllipse, по сути включает в себя пикселы с 1 по 19 по горизонтали и вертикали, таким образом, эффективный размер закрашиваемой области равен 19 пикселам. Я сказал «по сути», поскольку считается, что слева остается пиксел, занимающий позицию 0! Кроме того, эллипс, нарисованный DrawEllipse, всегда немного перекрывается с областью, закрашенной FillEllipse. Если нужно получить закрашенный эллипс с контуром, сначала надо вызывать метод FillEllipse, а затем — DrawEllipse.

Также имеются три метода FillPie:


Методы FillPie класса Graphics



void FillPie(Brush brush, int x, int y, int cx, int cy,
             int iAngle, int iSweep)
void FillPie(Brush brush, float x, float y, float cx, float cy,
             float fAngle, float fSweep)
void FillPie(Brush brush, Rectangle rect,
             float fAngle, float fSweep)


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

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