Цитата |
---|
Александр Савелов написал: Здравствуйте!
Для отрисовки образца объекта из классификатора можно использовать следующий пример |
Здравствуйте.
Пытаюсь нарисовать значки из классификатора используя приведенный пример кода. На выходе получаю прозрачные квадраты. Использую Конструктор 12.0.2.1 в AstraLinux 1.5.
Нужно ли вообще создавать рисуемый объект на карте? Или можно просто по коду и набору др. параметром рисовать
его образец? Пробовал и так и этак, результат один и тот же.
Карта открыта, пользовательский слой открыт, в parent->hRsc - идентификатор классификатора пользовательского слоя.
Код |
---|
//icon
//пробовал создавать объект на карте
// HOBJ hObj = mapCreateSiteObject( mapview_GD->h_gd, parent->hSite );
// mapRegisterObject(hObj, desc.Code, desc.Local);
// mapCommit(hObj);
//номер функции отображения
long rscObjFuncNumber = mapGetRscObjectFunction( parent->hRsc , desc.Incode );
//параметры отображения
const char* rscObjectParameters = mapGetRscObjectParameters( parent->hRsc, desc.Incode );
// Запросить параметры палитры карты (для отображения объекта)
COLORREF palette[256];
long colorCount = mapGetSiteColorsCount( mapview_GD->h_gd, parent->hSite );
mapGetSitePalette(mapview_GD->h_gd, parent->hSite, palette, colorCount);
// Выделить память для отрисовки объекта
const int ICON_SIZE = 32;
XIMAGEDESC ximageDesc;
ximageDesc.Width = ICON_SIZE;
ximageDesc.Height = ICON_SIZE;
ximageDesc.Depth = 32;
ximageDesc.CellSize = ximageDesc.Depth / 8;
ximageDesc.RowSize = ximageDesc.Width * ximageDesc.CellSize;
char *paintMemory = new char[ximageDesc.Width * ximageDesc.Height * ximageDesc.CellSize];
ximageDesc.Point = paintMemory;
// Отрисовать образец объекта
RECT rectDraw;
rectDraw.left = 0;
rectDraw.top = 0;
rectDraw.right = ICON_SIZE;
rectDraw.bottom = ICON_SIZE;
const char *objectText = NULL;
long isPainted = mapPaintExampleObjectByFuncToXImage( mapview_GD->h_gd, &ximageDesc, &rectDraw, rscObjFuncNumber,
rscObjectParameters, colorCount, palette, objectText, desc.Local);
// Вывести картинку в файл
if( isPainted )
{
QImage image((uchar*)(ximageDesc.Point), ximageDesc.Width, ximageDesc.Height, QImage::Format_ARGB32);
image.save( QString("./tmp/%1.png").arg( desc.Incode ) );
} |