1) Каков размер картинки-результата при вызове obj->Example(hdc)? всегда 32x32 px? Можно ли его поменять? 2) А цвет линии в Example() поменять есть способ? 3) В редакторе классификатора панорамыМини есть "Масштабирование объектов в окнах-примерах", это можно както в коде выставлять? (некоторые объекты вылезают за пределы 32х32)
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