Добрый день, уважаемые коллеги.
Во время тестирования нашего программного продукта обнаружили, что на некоторых картах 2 запуска функции mapPaintToXImage в рамках разных процессов с одними и теми же параметрами дают разные результаты.
Изображения после первого запуска ([URL=https://forsys.ru/nextcloud/index.php/s/N7JKXjjbZemrmTS]https://forsys.ru/nextcloud/index.php/s/N7JKXjjbZemrmTS[/URL]):
Изображение после второго запуска ([URL=https://forsys.ru/nextcloud/index.php/s/JMSnj9BxAPJWdb9]https://forsys.ru/nextcloud/index.php/s/JMSnj9BxAPJWdb9[/URL]):
Масштаб, смещение и размер изображения полностью совпадают. Красным подсвечены пиксели, которые не совпадают с первым запуском.
Отсюда вопрос: что необходимо сделать, что бы 2 запуска mapPaintToXImage в рамках разных процессов давали одинаковый результат?
Изображение формирует так:[CODE]func(int mapX, int mapY, int w, int h)
{
int newW = w;
int newH = h;
RECT rect;
rect.left = mapX;
rect.top = mapY;
rect.right = mapX + newW;
rect.bottom = mapY + newH;
const int mapDepth = 32;
XIMAGEDESC xImagedesc;
long allignWidth = newW * (mapDepth / 8);
long size = allignWidth * newH;
char* lpBits = NULL;
lpBits = new char[size];
memset(lpBits, 0x0, size);
xImagedesc.Point = lpBits; // Address of pixels area
xImagedesc.Width = newW; // String width in pixels
xImagedesc.Height = newH; // String amount
xImagedesc.Depth = mapDepth;// Element size in bits (8, 15, 16, 24, 32)
xImagedesc.CellSize = mapDepth / 8;// Element size in bytes
xImagedesc.RowSize = newW * xImagedesc.CellSize;// String width in bytes
long int res = wrapper->mapPaintToXImage(hMap, &xImagedesc, 0, 0, &rect);
....
}
[/CODE]
Во время тестирования нашего программного продукта обнаружили, что на некоторых картах 2 запуска функции mapPaintToXImage в рамках разных процессов с одними и теми же параметрами дают разные результаты.
Изображения после первого запуска ([URL=https://forsys.ru/nextcloud/index.php/s/N7JKXjjbZemrmTS]https://forsys.ru/nextcloud/index.php/s/N7JKXjjbZemrmTS[/URL]):
Изображение после второго запуска ([URL=https://forsys.ru/nextcloud/index.php/s/JMSnj9BxAPJWdb9]https://forsys.ru/nextcloud/index.php/s/JMSnj9BxAPJWdb9[/URL]):
Масштаб, смещение и размер изображения полностью совпадают. Красным подсвечены пиксели, которые не совпадают с первым запуском.
Отсюда вопрос: что необходимо сделать, что бы 2 запуска mapPaintToXImage в рамках разных процессов давали одинаковый результат?
Изображение формирует так:[CODE]func(int mapX, int mapY, int w, int h)
{
int newW = w;
int newH = h;
RECT rect;
rect.left = mapX;
rect.top = mapY;
rect.right = mapX + newW;
rect.bottom = mapY + newH;
const int mapDepth = 32;
XIMAGEDESC xImagedesc;
long allignWidth = newW * (mapDepth / 8);
long size = allignWidth * newH;
char* lpBits = NULL;
lpBits = new char[size];
memset(lpBits, 0x0, size);
xImagedesc.Point = lpBits; // Address of pixels area
xImagedesc.Width = newW; // String width in pixels
xImagedesc.Height = newH; // String amount
xImagedesc.Depth = mapDepth;// Element size in bits (8, 15, 16, 24, 32)
xImagedesc.CellSize = mapDepth / 8;// Element size in bytes
xImagedesc.RowSize = newW * xImagedesc.CellSize;// String width in bytes
long int res = wrapper->mapPaintToXImage(hMap, &xImagedesc, 0, 0, &rect);
....
}
[/CODE]