| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		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; | 	 
  | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |