Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
cibo
Зарегистрирован: 03.08.2011 Сообщения: 4
|
Добавлено: Ср 03 Авг 2011 11:19 Заголовок сообщения: Рисование Символьным методом |
|
|
Добрый день. Возникли проблемы при рисовании. Суть такова создается контур и в вершинах контура должны появляться символы. Особенно интересует как нужно описать, то есть какими параметрами примитив(допустим елипс)/фигуру/рисунок что бы он отображался.
Код: | var
ipaint: IIngeoPainter;
isympaint: IIngeoSymbolPainter;
ifig: IInPictureFigure;
begin
....
ipaint:=istyle.Painters.Add(2);
isympaint:=ipaint As IIngeoSymbolPainter;
isympaint.PaintMethod:=0;
isympaint.VisibleMin:=0;
isympaint.VisibleMax:=0;
ipic:=isympaint.Picture;
ifig:=ipic.Figures.Add(2);
... |
Сам метод отображения описан вот так. Как я понимаю из-за isympaint.PaintMethod:=0; рисование будет происходить автоматически в вершинах.
Рисунок описан вот так.
Код: |
var
ifig: IInPictureFigure;
iellipse: IInPictureEllipseFigure;
begin
...
iellipse:=ifig AS IInPictureEllipseFigure;
iellipse.Brush.Style:=0;
iellipse.Brush.Transparency:=0;
iellipse.Brush.BackColor:=1;
iellipse.Brush.HatchColor:=3;
iellipse.Pen.Style:=0;
iellipse.Pen.WidthInMM:=4;
iellipse.Pen.Mode:=0;
iellipse.Pen.Color:=1;
iellipse.Width:=10;
iellipse.Height:=10;
iellipse.Visible:=true;
ifig.Left:=-5;
ifig.Bottom:=-5;
ifig.Height:=10;
ifig.Width:=10;
ifig.Visible:=true; |
Но все равно рисования не происходит. Буду признателен если укажите на ошибки в описании. А если выложите полный кусок кода рисующий в вершинах контура то будет совсем шикарно. |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Чт 04 Авг 2011 13:08 Заголовок сообщения: |
|
|
Что значит рисования не происходит? В Вашем коде его и нет. |
|
Вернуться к началу |
|
 |
cibo
Зарегистрирован: 03.08.2011 Сообщения: 4
|
Добавлено: Чт 04 Авг 2011 13:53 Заголовок сообщения: |
|
|
Разве не эта строка будет рисовать?
Код: | isympaint.PaintMethod:=0 |
Нужно исползовать PaintContour() для рисования?
Так же возникла проблема в самом рисунке. Я описал его как эллипс, но в стиле рисунок пуст.
Последний раз редактировалось: cibo (Чт 04 Авг 2011 14:11), всего редактировалось 1 раз |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Чт 04 Авг 2011 14:03 Заголовок сообщения: |
|
|
Вы создаете метод отображения в каком-то стиле и хотите создать объект? Я правильно понял? |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Чт 04 Авг 2011 14:06 Заголовок сообщения: |
|
|
Метод отображения - это структура данных, определяющая, как должен выглядеть контур (IIngeoContour) в окне карты. Где у Вас контур? Контур - это форма какого-то пространственного объекта или он сам по себе, созданный через Application.CreateObject ?
Опишите задачу подробнее. |
|
Вернуться к началу |
|
 |
cibo
Зарегистрирован: 03.08.2011 Сообщения: 4
|
Добавлено: Чт 04 Авг 2011 14:18 Заголовок сообщения: |
|
|
Извините что плохо описал задачу.
Я создаю контуры
Код: |
var
imapobj: IIngeoMapObjects;
imapob: IIngeoMapObject;
ishapes: IIngeoShapes;
ishape1: IIngeoShape;
icontpart1: IIngeoContourPart;
ishape2: IIngeoShape;
icontpart2: IIngeoContourPart;
begin
.....
imapobj:=IngeoApp.ActiveDb.MapObjects;
imapob:=imapobj.AddObject(ilayerID);
ishapes:=imapob.Shapes;
ishape1:=ishapes.Insert(-1,istyleID);
icontpart1:=ishape1.Contour.Insert(-1);
icontpart1.Closed:=true;
ishape2:=ishapes.Insert(-1,istyleID);
icontpart2:=ishape2.Contour.Insert(-1);
icontpart2.Closed:=true;
imapobj.UpdateChanges; |
И заполняю их точками
Код: | icontpart1.InsertVertex(-1,t.x1,t.y1,0);
imapobj.UpdateChanges;
ivmap.Update; |
Так же я создал отдельные карту, слой, стиль для этого объекта. Мне нужно что бы при добавлении вершин к нему в вершинах появлялись эллипсы отрисованные символьным методом.
Контур успешно создается, а вот с символами не получается.[/code] |
|
Вернуться к началу |
|
 |
cibo
Зарегистрирован: 03.08.2011 Сообщения: 4
|
Добавлено: Пт 05 Авг 2011 09:29 Заголовок сообщения: |
|
|
Ну ладно, рисование получилось.
Не подскажите теперь как сделать что бы MouseDown() реагировал только на нажатие левой кнопки мыши? |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Пт 05 Авг 2011 09:40 Заголовок сообщения: |
|
|
в mousedown передается кнопка которая нажата, в справке это есть |
|
Вернуться к началу |
|
 |
Foton
Зарегистрирован: 09.10.2006 Сообщения: 158 Откуда: Ярославль
|
Добавлено: Вт 16 Авг 2011 13:24 Заголовок сообщения: |
|
|
cibo, как получилось сам символ создать? у меня рисунок в символьном методе остается пустой
Код: | var
anActLayer: IIngeoLayer;
mystyle: IIngeoStyle;
mysym: IIngeoSymbolPainter;
fig:IInPictureEllipseFigure ;
begin
anActLayer:= IngeoApp.ActiveProjectView.ActiveLayerView.Layer;
mystyle:= anActLayer.Styles.Add;
mystyle.Update;
mystyle.Name:='std';
mysym:= mystyle.Painters.Add(inptSymbol) as IIngeoSymbolPainter;
mystyle.Update;
mysym.Picture.X1:=0;
mysym.Picture.X2:=0;
mysym.Picture.Y1:=5;
mysym.Picture.Y2:=5;
fig:=mysym.Picture.Figures.Add(2) as IInPictureEllipseFigure;
fig.Bottom:=0;
fig.Left:=0;
fig.Width:=5;
fig.Height:=5;
fig.Visible:=true;
fig.Brush.Style:=0;
fig.Brush.Transparency:=0;
fig.Brush.BackColor:=1;
fig.Brush.HatchColor:=3;
fig.Pen.Style:=0;
fig.Pen.WidthInMM:=4;
fig.Pen.Mode:=0;
fig.Pen.Color:=1;
mystyle.Update;
end; |
|
|
Вернуться к началу |
|
 |
|