Если в функцию рисования не передается параметр типа visualType (viewType), то mapSetViewType(hMap, VT_PRINTRST) необходимо вызывать непосредственно перед функцией рисования:
| Код |
|---|
// Устанавливаем экранный тип визуализации
long int viewType = mapSetViewType(ident->Map, VT_PRINTRST);
// Рисуем знак
int retPaint = mapPaintObject95(ident->Map, dcApp, &rect, ident->Obj);
// Восстанавливаем тип визуализации карты
mapSetViewType(ident->Map, viewType);
|
Если передается параметр типа visualType (как в Вашем примере), то значение должно быть корректным:
mapPaintExampleFunc(hMap,hBitmapDC,rect,rscObjectFunctionNumber,(char *)rscObjectParameters,mapColorsCount, mapColors,
VT_PRINTRST , NULL,rscObject.Local,hRsc,1);
Текст функции рисования образца объекта на вкладке "Вид" в диалоге выбора объекта карты (vcl, Windows) и на вкладках "Вид" (VT_SCREEN) и "На печать" (VT_PRINTRST) в редакторе классификатора (на вкладке "Объекты"):
| Код |
|---|
void TFormObjImage::PaintObject()
{
if (TotalParam == 0)
return;
HDC dc = PaintBox1->Canvas->Handle;
RECT rect = PaintBox1->ClientRect;
HRSC hrsc = GetRsc();
HOBJ info = GetInfo();
if (info)
{
SEMANTIC* semantic = 0;
int exampleflags = 0;
int local = GetLocal();
if (local == LOCAL_SQUARE && Incode)
{
if (mapGetRscObjectPolygonPointFlag(hrsc, Incode))
exampleflags |= EXAMPLE_POLYGONPOINT;
if (mapGetRscObjectDirect(hrsc, Incode) == OD_RIGHT)
exampleflags |= EXAMPLE_CLOCKWISE;
}
TEMPLIBRARY lib(MAPACCLIB);
typedef SEMANTIC* (WINAPI* t_func)(HOBJ hobj);
t_func func = (t_func)lib.GetFunction("mapGetObjectSemantic");
if (func)
semantic = func(info);
mapPaintExampleFuncEx(GetMap(), dc, rect, ParmHead.Func, TotalParam, RscColorCount, RscPalette,
VisualType, 0, local, hrsc, 1, 0, semantic, exampleflags);
}
else
{
mapPaintExampleRscObjectEx(GetMap(), hrsc, dc, &rect, Incode, VisualType, 0, 100, 0);
}
}
|
В диалоге выбора объекта карты вкладка "Вид" содержит оба типа визуализации (кроме подписей и шаблонов, имеющих один вид):
| Код |
|---|
if (DiaType == DI_SCR)
VisualType = VT_SCREEN;
else
VisualType = VT_PRINTRST;
|