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

Как сделать прозрачным фон элемента

Добавлено: 03 июл 2012, 15:33
Tereha
Создаю элемент на карте :

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

            ESRI.ArcGIS.Carto.IPictureElement pPictureElement;
            pPictureElement = new ESRI.ArcGIS.Carto.PngPictureElementClass();
            pPictureElement.ImportPictureFromFile(@"D:\рисунок.png");
Изображение на белом фоне, который нужно убрать. Как?

Re: Как сделать прозрачным фон элемента

Добавлено: 03 июл 2012, 16:54
Дмитрий Барышников
А стандартными средствами это делается - имеется в виду в интерфейсе ArcMap?

Re: Как сделать прозрачным фон элемента

Добавлено: 04 июл 2012, 10:39
Tereha
Стандартными средствами не смотрел. Убрал фон у рисунка .png, но белый фон все равно при создании на axMapControl. Хотя в обычном средстве просмотра фотографий Windows фона нет.
Код на сейчас:

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

        private void createPictureElement(Image img)
        {
            ESRI.ArcGIS.Carto.IPictureElement pPictureElement;
            pPictureElement = new ESRI.ArcGIS.Carto.PngPictureElementClass();
            pPictureElement.ImportPictureFromFile(@"D:\__VS\Иконки\Новая папка\Зона пожара схема.png");
            // pPictureElement.D:\__VS\Иконки\Новая папка
            ////((IElement)pPictureElement)..

            //  ((IOlePictureElement)pPictureElement).ImportPicture(IPictureDispHost.GetIPictureDispFromPicture(img) as stdole.IPictureDisp);

            ESRI.ArcGIS.Geometry.IEnvelope pEnv = new ESRI.ArcGIS.Geometry.EnvelopeClass();

            //нужно достать размеры картинки в пикселах , умножаем на 96 - точек на дюйм = размер в дюймах
            // это получили размеры картинки в дюймах. Еще нужно пересчитать в размеры в единицах карты

            Size s = getSizeInMapUnits(new Size(105, 75));

            pEnv.PutCoords(mapX, mapY, mapX + s.Width, mapY + s.Height);
            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);
Сделаю - отпишусь.

Re: Как сделать прозрачным фон элемента

Добавлено: 04 июл 2012, 20:12
Tereha
Во вложении - рисунок и результат выполнения кода. Нужно удалить белый фон.

Re: Как сделать прозрачным фон элемента

Добавлено: 04 июл 2012, 21:27
Дмитрий Барышников
Если через интерфейс нельзя, то и программно не получится. Ищите другие способы, например: http://resources.esri.com/help/9.3/arcg ... 86ce75.htm

P.S. Судя по картинке - бедные Лопухи :)

Re: Как сделать прозрачным фон элемента

Добавлено: 05 июл 2012, 08:05
Tereha
Ну как то так - из верхнего рисунка сделан нижний с прозрачным фоном.