Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Рисование Символьным методом

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
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;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB