На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

axMapObj Example размер изображение

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
axMapObj Example размер изображение
 
1) Каков размер картинки-результата при вызове obj->Example(hdc)? всегда 32x32 px? Можно ли его поменять?
2) А цвет линии в Example() поменять есть способ?
3) В редакторе классификатора панорамыМини есть "Масштабирование объектов в окнах-примерах", это можно както в коде выставлять? (некоторые объекты вылезают за пределы 32х32)

(вдруг кому код на c++/cli потребуется)
Код
System::Void Form1::button1_Click(System::Object^ sender, System::EventArgs^ e) {
   axGisToolKit::axMapObj ^obj = gcnew axGisToolKit::axMapObj;
   obj->cMapView = axMapScreen->C_CONTAINER; // axMapScreen с загруженной картой

   Int32 nObjId = obj->CreateObjectByKey(0, (int)axGisToolKit::TxMetricType::IDFLOAT2, "24624624624"); // ключ из классификатора в карте
   if( nObjId == 0 ) return;

   Bitmap ^bmp = gcnew Bitmap(32, 32, System::Drawing::Imaging::PixelFormat::Format32bppArgb);
   System::Drawing::Graphics ^gr = Graphics::FromImage(bmp);

   IntPtr hdc = gr->GetHdc();
   obj->Example( (Int32)hdc );
   gr->ReleaseHdc();

   bmp->Save("d:\\test.bmp"); // просто картинка

   //а это png с прозрачностью фона
   bmp->MakeTransparent(Color::Silver);
   Image ^img = (Image^)bmp;
   img->Save("d:\\test.png", System::Drawing::Imaging::ImageFormat::Png);
}
Изменено: Ник Павлов - 15.08.2016 17:25:09
 
1) Размер возвращаемой картинки должен соответствовать размеру Bitmap ^bmp, т.е. можете задать нужный.
2) Цвет частей объекта меняется в классификаторе, т.к. эта функция возвращает экземпляр картинки объекта.
3) Попробуйте функцию
Код
  // Отобразить образец вида объекта по номеру записи
  // в классификаторе объектов (incode)
  // hdc   - идентификатор контекста устройства вывода,
  // rect  - координаты фрагмента карты (Draw)
  // в изображении (Picture).
  // hSite - идентификатор открытой пользовательской карты
  // factor - коэффициент масштабируемости изображения 50, 100, 200...
  // Используется в диалогах выбора вида объекта
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapPaintExampleSiteObjectEx(HMAP hMap, HSITE hSite,
                                                     HDC hdc, RECT *rect,
                                                     long int incode,
                                                     long int factor);
 
 
1) obj->Example( hdc ) врядли умеет получать размеры картинки
2) поменял цвета вручную (через ImageAttributes), через классификатор с наскоку не удалось
3) хочется это из коробки в activeX, подожду комментариев разработчиков..
 
В GIS ToolKit Ax в функции obj->Example внутри устанавливается размер картинки 32х32, не зависимо от  того, какого размера передали изначально картинку. Попробуем решить эту задачу, что бы было "из коробки".
На данный момент могу предложить следующий вариант решения с использованием API (пример на VB):
Код
    Declare Function mapObjectCode Lib "gisacces.dll" (ByVal Obj As Integer) As Integer
    Declare Function SetViewportOrgEx Lib "gdi32.dll" (ByVal hDC As Integer, ByVal left As Integer, ByVal top As Integer, ByVal zero As Integer) As Integer
    Declare Function mapGetObjectSiteIdent Lib "gisacces.dll" (ByVal aHMap As Integer, ByVal aHObj As Integer) As Integer
    Declare Function mapPaintExampleSiteObject Lib "gisacces.dll" (ByVal aHMap As Integer, ByVal aHSite As Integer, ByVal aHDC As IntPtr, ByRef arect As axGisToolKit.TxRect, ByVal incode As Integer) As Integer
Код
    Private Sub SaveExample_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim bmp As Bitmap
        Dim gr As System.Drawing.Graphics
        Dim hdc As IntPtr
        Dim codObj As Integer
        Dim ires As Integer
        Dim ihsite As Integer
        Dim R As axGisToolKit.TxRect

        ' размеры картинки
        R.Left = 0
        R.top = 0
        R.Right = 200
        R.bottom = 200

        bmp = New Bitmap(R.Right, R.bottom, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        gr = Graphics.FromImage(bmp)
        hdc = gr.GetHdc()
        ' код объекта
        codObj = mapObjectCode(aFind.cMapObj.ObjHandle)

        SetViewportOrgEx(hdc, 0, 0, 0)
        ' идентификатор карты 
        ihsite = mapGetObjectSiteIdent(aMvMap.MapHandle, aFind.cMapObj.ObjHandle)
        'сохранить
        ires = mapPaintExampleSiteObject(aMvMap.MapHandle, ihsite, hdc, R, codObj)
        gr.ReleaseHdc(hdc)
        bmp.Save("d:\test.bmp")
    End Sub
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности