Пример создания элемента PictureElement

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
Tereha
Завсегдатай
Сообщения: 423
Зарегистрирован: 15 май 2010, 06:13
Репутация: 7

Пример создания элемента PictureElement

Сообщение Tereha »

Доброго времени суток!
Может кто-то поделится ссылкой на пример создания из картинки элемента (JpgPictureElementClass или другого типа) на axMapControl? (arcEngine 2010)
PS пример создания текстового элемента

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

        private void showText(double x, double y)
        {
            IGraphicsContainer graphicsContainer = axMapControl1.Map as IGraphicsContainer;
            IElement element = new TextElementClass();
            ITextElement textElement = element as ITextElement;

            //Create a point as the shape of the element.
            IPoint point = new PointClass();
            point.X = x;
            point.Y = y;
            element.Geometry = point;
            textElement.Text = "Hello World";
            graphicsContainer.AddElement(element, 0);

            //Flag the new text to invalidate.
            IActiveView activeView = axMapControl1.Map as IActiveView;
            activeView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
        }
Tereha
Завсегдатай
Сообщения: 423
Зарегистрирован: 15 май 2010, 06:13
Репутация: 7

Re: Пример создания элемента PictureElement

Сообщение Tereha »

Нашел пример:

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

        private void createPictureElement(double x, double y) {


            ESRI.ArcGIS.Carto.IPictureElement pPictureElement;
            pPictureElement = new ESRI.ArcGIS.Carto.JpgPictureElementClass();
            pPictureElement.ImportPictureFromFile(@"D:\__VS\Иконки\Инф заболевания людей.JPG");
            //((IElement)pPictureElement)..

            ESRI.ArcGIS.Geometry.IEnvelope pEnv = new ESRI.ArcGIS.Geometry.EnvelopeClass();
            pEnv.PutCoords(x, y, x+1000,y+1000);
            ESRI.ArcGIS.Carto.IElement pElement;
            pElement = pPictureElement as ESRI.ArcGIS.Carto.IElement;
            pElement.Geometry = pEnv;
            ESRI.ArcGIS.Carto.IGraphicsContainer pGraphicContainer;
            pGraphicContainer = axMapControl1.Map as IGraphicsContainer;
            pGraphicContainer.AddElement(pElement, 0);
            ESRI.ArcGIS.Carto.IActiveView pActiveView;
            pActiveView = pGraphicContainer as ESRI.ArcGIS.Carto.IActiveView;
            pActiveView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGraphics, pElement, pEnv);
  
        }
А как загрузить изображение не из файла

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

 pPictureElement.ImportPictureFromFile(@"D:\__VS\Иконки\Инф заболевания людей.JPG");
А просто элементу присвоить значение типа bitmap?
2. В приведенном примере изображение имеет постоянный размер в метрах, а как сделать постоянный размер в пикселах дисплея?
Tereha
Завсегдатай
Сообщения: 423
Зарегистрирован: 15 май 2010, 06:13
Репутация: 7

Re: Пример создания элемента PictureElement

Сообщение Tereha »

Сделал так:

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

            ((IOlePictureElement)pPictureElement).ImportPicture(IPictureDispHost.GetIPictureDispFromPicture(изобрДействПожара.Image) as stdole.IPictureDisp); 
где

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

        internal sealed class IPictureDispHost : AxHost
        {
            private IPictureDispHost() : base("{63109182-966B-4e3c-A8B2-8BC4A88D221C}") { }
            /// <summary>
            /// Convert the image to an ipicturedisp.
            /// </summary>
            /// <param name="image">The image instance</param>
            /// <returns>The picture dispatch object.</returns>
            public new static object GetIPictureDispFromPicture(Image image)
            {
                return AxHost.GetIPictureDispFromPicture(image);
            }
            /// <summary>
            /// Convert the dispatch interface into an image object.
            /// </summary>
            /// <param name="picture">The picture interface</param>
            /// <returns>An image instance.</returns>
            public new static Image GetPictureFromIPicture(object picture)
            {
                return AxHost.GetPictureFromIPicture(picture);
            }
        }
Но может быть есть более простой вариант?
Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей