четверг, 11 июня 2009 г.

Компонент AGE, Another Graphic Engine in .NET

Итак сразу к делу. Компонент можно достать здесь и там же есть описание его.
Компонент неплох. Хорошо рисует, можно понастраивать Canvas на котором все это дело рисуется. Красиво рисует, что тоже плюс.



Для того что бы вам с ним начать работать нужно добавить компонент входящий в сборку NeoDataType.Graphics. После чего кидаете на форму компонент отрисовки элементов (Canvas). Компонент умеет рисовать объекты наследующиеся от NeoDataType.Graphic.GraphicItem. У этого типа есть ссылка на объект типа NeoDataType.Graphic.Painter, именно в этом классе вы и реализуете отрисовку объекта.
У NeoDataType.Graphic.Painter есть ссылка на NeoDataType.Graphic.GraphicItem.

Т.е. после того как вы создали свой объект и свой пейнтер получится следующее:

Я думаю понятно что получилось. Реализация вот:

public class TestPainter : NeoDataType.Graphic.Painter
{
protected override void Paint(System.Drawing.Graphics g)
{
TestPObject item = (TestPObject) Item;
g.DrawLine(item.Pen, item.Bounds.Left, item.Bounds.Top, item.Bounds.Right, item.Bounds.Bottom);
}
}

public class TestPObject : NeoDataType.Graphic.GraphicItem
{
public Pen Pen{ get; set;}
public TestPObject()
{
Painter = new TestPainter();
}
}

Для того что бы компонент начал отрисовывать ваши элементы следует добавить экземпляры типа NeoDataType.Graphic.GraphicItem к коллекции эелементов содержащихся в компоненте. Для этого нам у Canvas надо обратится к GraphicDocument в котором содержится коллекция наших объектов. Код примерно следующй:

cnvMain.Document = new GraphicDocument();
cnvMain.Document.AddItem(new TestPObject(){Pen = Pens.Black});

Далее начнется отрисовка вашего элемента на Canvas.

Этот компонент я использовал в своем дипломе для отрисовки печатных плат. Все было здорово.

Самое главное достоинство этого компонента в том что у него есть скриптовый препроцессор, который позволяет рисовать элементы скриптами. Формат скрипта можно посмотреть на странице этого контрола. Что бы начать использование скрипта следут использовать элемент типа ScriptedItem.

Будут вопросы обращайтесь.

Комментариев нет:

Отправить комментарий