Я использую Windows (как 7 & XP - как 32-битная) и пишу на C ++
Я получаю растровые изображения из внешнего источника. Эти растровые изображения имеют фиксированное разрешение (384x288)
После получения растрового изображения мне нужно изменить его размер на основе макета переменного размера, поэтому в настоящее время я использую StretchBlt для выполнения этих задач.
Если я изменю размер растрового изображения до большего на экране, это прекрасно работает.
Однако, если я уменьшу входящее растровое изображение до уменьшенной версии, чтобы разместить его на экране, я получу странный эффект типа «бокса», возникающий над изображением.
В следующем примере исходное изображение одинаково для каждой из трех панелей. Но две левой руки (меньше по размеру) имеют эффект бокса / линий.
Для реального вызова StretchBlt я делаю это:
memcpy(at_TempPointer[PortNo], // Destination
(void *)VideoBufferAddress, // Source
FIXED_IMAGE_WIDTH * FIXED_IMAGE_HEIGHT * BYTES_PER_PIXEL // Number of bytes
);
StretchBlt(at_ImageDC[PortNo], // HDC Dest
0, // X Origin Dest
0, // Y Origin Dest
at_Width[PortNo], // Width Dest
at_Height[PortNo], // Height Dest
at_GhDC[PortNo], // HDC Source
0, // X Origin Source
0, // Y Origin Source
FIXED_IMAGE_WIDTH, // Width Source
FIXED_IMAGE_HEIGHT, // Height Source
SRCCOPY // Graphic Operation
);
Но мне интересно, возможно, проблема в другом месте.
Кто-нибудь еще имел опыт такого изменения размера изображения, который знает, как я могу это исправить?