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

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

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

Сообщение Tereha »

Создаю элемент на карте :

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

            ESRI.ArcGIS.Carto.IPictureElement pPictureElement;
            pPictureElement = new ESRI.ArcGIS.Carto.PngPictureElementClass();
            pPictureElement.ImportPictureFromFile(@"D:\рисунок.png");
Изображение на белом фоне, который нужно убрать. Как?
Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

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

Сообщение Дмитрий Барышников »

А стандартными средствами это делается - имеется в виду в интерфейсе ArcMap?
Tereha
Завсегдатай
Сообщения: 423
Зарегистрирован: 15 май 2010, 06:13
Репутация: 7

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

Сообщение 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);
Сделаю - отпишусь.
Tereha
Завсегдатай
Сообщения: 423
Зарегистрирован: 15 май 2010, 06:13
Репутация: 7

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

Сообщение Tereha »

Во вложении - рисунок и результат выполнения кода. Нужно удалить белый фон.
Вложения
Это иконка, которую нужно положить на карту
Это иконка, которую нужно положить на карту
Зона пожара схема.png (5.32 КБ) 5601 просмотр
Результат выполнения приведенного кода.
Результат выполнения приведенного кода.
White backgrounl picture.jpg (14.97 КБ) 5601 просмотр
Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

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

Сообщение Дмитрий Барышников »

Если через интерфейс нельзя, то и программно не получится. Ищите другие способы, например: http://resources.esri.com/help/9.3/arcg ... 86ce75.htm

P.S. Судя по картинке - бедные Лопухи :)
Tereha
Завсегдатай
Сообщения: 423
Зарегистрирован: 15 май 2010, 06:13
Репутация: 7

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

Сообщение Tereha »

Ну как то так - из верхнего рисунка сделан нижний с прозрачным фоном.
Вложения
Нижняя иконка сделана из верхней удалением фона
Нижняя иконка сделана из верхней удалением фона
transparent.png (610.63 КБ) 5583 просмотра
Ответить

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

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

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