Страница 1 из 1

Вывод текста в заданной точке

Добавлено: 30 апр 2014, 13:46
BodyZ
Доброго времени суток.
Возникла задача: вывести текст над полилинией в районе второй точки.
Сделал таким образом

Код: Выделить всё

        IElement GetTextSymbol_X(IGeometry l_geometry)
        {
            IRgbColor color = new RgbColorClass();
            color.Red = 255;            color.Green = 255;            color.Blue = 255;

            ITextSymbol textSymbol = new TextSymbolClass();
            textSymbol.Color = color;            textSymbol.Size = 16;

            Polyline line = l_geometry as Polyline;
            if (line != null)
            {
                IPointCollection pColection = line as IPointCollection;
                IElement element = textSymbol as IElement;
                textSymbol.Text = pColection.Point[0].X.ToString();
                double x = pColection.Point[1].X -10;
                double y = pColection.Point[1].Y;
                IPoint pointOfPrint = new PointClass();
                pointOfPrint.PutCoords(x, y);
                pointOfPrint.SpatialReference = l_geometry.SpatialReference;

                element.Geometry = pointOfPrint; //При выполнении в строке возникает ошибка 
//"В экземпляре объекта не задана ссылка на объект."

                return element;
            }
            else
                return
                    null;
}
        }
В строке element.Geometry = pointOfPrint; возникает ошибка :oops:
"В экземпляре объекта не задана ссылка на объект."
Подскажите пожалуйста где я ошибаюсь.
Заранее спасибо за ответ :D

Re: Вывод текста в заданной точке

Добавлено: 30 апр 2014, 16:44
BodyZ
:P :P :P Получилось сделать таким образом :P :P :P

Код: Выделить всё

        private IElement GetText_X(IGeometry geometry, float size)
        {
            ITextElement textElement = new TextElementClass();
            IElement element = textElement as IElement;

            ITextSymbol textSymbol = new TextSymbolClass();
            IRgbColor color = new RgbColorClass();
            color.Red = 255;
            color.Green = 255;
            color.Blue = 255;
            textSymbol.Color = color;
            textSymbol.Size = Convert.ToDouble(size);
            IPointCollection pColection = (geometry as Polyline) as IPointCollection;  
            double x = pColection.Point[2].X;
            double y = pColection.Point[2].Y+5;
            IPoint pointOfPrint = new PointClass();
            pointOfPrint.PutCoords(x, y);
            pointOfPrint.SpatialReference = geometry.SpatialReference;
            element.Geometry = pointOfPrint as IGeometry; 
            textElement.Symbol = textSymbol;
            textElement.Text = Convert.ToInt32(pColection.Point[0].X).ToString();
            return element;
        }