 |
www.integro.ru ЦСИ ИНТЕГРО
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Андрей
Зарегистрирован: 18.04.2005 Сообщения: 47 Откуда: г. Калуга
|
Добавлено: Вт 12 Дек 2006 19:57 Заголовок сообщения: Как нарисовать линию по координатам |
|
|
Имеется куча координат, требуется по ним нарисовать объект линией, точки нарисовать смог, а вот линию... мож я чего не понимаю...
Заранее спасибо |
|
Вернуться к началу |
|
 |
RuslanG

Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
|
Добавлено: Ср 13 Дек 2006 00:48 Заголовок сообщения: |
|
|
Цитата: | точки нарисовать смог, а вот линию... |
Скорее всего использовался для отображения символьный тип, т.е. был создан объект стилем с символьным методом отображения (в данном случае символом послужила "точка"). Если Вы стиль, отображающий линии создаете вручную, т.е. не программно, то посмотрите метод отображения в стиле.. Он должен быть "стандартным". Если программно создаете, то предлагаю посмотреть нижеследующий код.
Не знаю в какой среде и на каком языке Вы пишите код..
Пример на ObjectPascal, демонстрирующий создание новой карты, слоя, стиля со стандартным методом отображения и объекта с координатами из FPart.
Код: | procedure CreateMapLayerAndObjectWithVertex;
// Возвращает территорию активного проекта
function GetArea: IIngeoArea;
begin
Result := FIngeo.ActiveProjectView.Project.Area;
end;
// Создает векторную карту с названием 'NewVectorMap' у территории anArea
// Также включает карту в текущий проект
function CreateVectorMap(anArea: IIngeoArea): IIngeoVectorMap;
begin
Result := anArea.Maps.AddVectorMap;
Result.Name := 'NewVectorMap';
Result.Update;
if not FIngeo.ActiveProjectView.Project.Contents.Contains(Result.ID) then
FIngeo.ActiveProjectView.Project.Contents.Add(Result.ID);
end;
// Создает слой у карты aVectorMap
function CreateLayer(aVectorMap: IIngeoVectorMap): IIngeoLayer;
begin
Result := aVectorMap.Layers.Add;
Result.Name := 'NewLayer';
Result.Update;
end;
// Создает стиль у слоя aLayer
function CreateStyle(aLayer: IIngeoLayer): IIngeoStyle;
begin
Result := aLayer.Styles.Add;
Result.Name := 'NewStyle';
Result.Update
end;
// Создает стандартный метод отображения у стиля aStyle
function CreateStdPainter(aStyle: IIngeoStyle): IIngeoStdPainter;
begin
Result := aStyle.Painters.Add(inptStd) as IIngeoStdPainter;
// При необходимости меняем параметры окантовки
with Result.Pen do begin
Style := inpsSolid;
WidthInMM := 0;
ForZoomScale := 0;
Color := clBlack;
Mode := inpmCopy;
end;
// При необходимости меняем параметры закраски
with Result.Brush do begin
Style := inbsSolid;
BackColor := clWhite;
HatchColor := clBlack;
Transparency := 0;
end;
aStyle.Update;
end;
// Создаем пространственный объект в определенном слое
function CreateMapObject(aMapObjects: IIngeoMapObjects; aLayer: IIngeoLayer): IIngeoMapObject;
begin
Result := aMapObjects.AddObject(aLayer.ID);
end;
// Добавляем фигуру определенного стиля в пространственный объект
function CreateShape(aMapObject: IIngeoMapObject; aStyle: IIngeoStyle): IIngeoShape;
begin
Result := aMapObject.Shapes.Insert(-1, aStyle.ID);
end;
// Добавляем часть контура
// aClosed - параметр, определяющий замкнутость части контура.
function CreateContourPart(aContour: IIngeoContour; aClosed: Boolean): IIngeoContourPart;
begin
Result := aContour.Insert(-1);
Result.Closed := aClosed;
end;
// Добавляем вершину aVertex в часть контура
procedure AddVertex(aContourPart: IIngeoContourPart; aVertex: TVertex);
begin
with aVertex do
aContourPart.InsertVertex(-1, Point.x, Point.y, Convexity);
end;
var
i: Integer;
aVertex: TVertex;
anIngeoMapObjects: IIngeoMapObjects;
anIngeoMapObject: IIngeoMapObject;
anIngeoShape: IIngeoShape;
anIngeoPart: IIngeoContourPart;
anArea: IIngeoArea;
aVectorMap: IIngeoVectorMap;
aLayer: IIngeoLayer;
aStyle: IIngeoStyle;
aStdPainter: IIngeoStdPainter;
begin
anIngeoMapObjects := FIngeo.ActiveDb.MapObjects;
anIngeoMapObjects.TransactionName := 'Создание новых карты, слоя, стиля, метода отображения и объектов';
anArea := GetArea;
aVectorMap := CreateVectorMap(anArea);
aLayer := CreateLayer(aVectorMap);
aStyle := CreateStyle(aLayer);
aStdPainter := CreateStdPainter(aStyle);
anIngeoMapObject := CreateMapObject(anIngeoMapObjects, aLayer);
anIngeoShape := CreateShape(anIngeoMapObject, aStyle);
// FPart - часть контура, где хранятся координаты (вершины)
// FPart необходимо будет подменить Вашей структурой хранения координат
anIngeoPart := CreateContourPart(anIngeoShape.Contour, FPart.Closed);
for i := 0 to Length(FPart.Vertexes) - 1 do begin
aVertex := FPart.Vertexes[i];
AddVertex(anIngeoPart, aVertex);
end;
anIngeoMapObjects.UpdateChanges;
end; |
_________________ С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
|
|