DrawImage Параметр высоты не работает

Я делаю приложение WinForms, используя VS2012 c ++ / cli и DrawImage для отображения HD-изображений, снятых с веб-камеры.

Изображения представляют собой растровые изображения 1920 x 1080, которые я пытаюсь отобразить на панели управления. Размер панели составляет 240 х 135 (т. Е. Ровно 1/8 от HD-изображения).

Я вызываю DrawImage следующим образом:

    System::Drawing::Rectangle destRect = System::Drawing::Rectangle(0,0,Cam0Panel->Width,Cam0Panel->Height);
g->DrawImage(b,destRect);

Следует указать, что изображение должно быть нарисовано в относительном положении 0,0 на панели, а размер изображения должен быть 240 x 135. Однако изображение не будет отображаться.

Если я изменю параметр Height, чтобы указать Panel-> Bottom (который является абсолютной позицией в приложении — ~ 630), изображение отображается и имеет правильный размер по ширине, но не правильный размер по высоте.

Есть идеи, что я делаю не так или как правильно изменить размер и отобразить изображение?

Вот полная версия кода.

    void Cam0Panel_Paint( Object^ /*sender*/, System::Windows::Forms::PaintEventArgs^ e )
{
System::Drawing::Bitmap^ b = ImageWinArray[CHANNEL_SELECT0];
Graphics^ g = e->Graphics;

g->InterpolationMode = System::Drawing::Drawing2D::InterpolationMode::Bilinear;
g->CompositingMode = System::Drawing::Drawing2D::CompositingMode::SourceCopy;
System::Drawing::Rectangle destRect = System::Drawing::Rectangle(0,0,Cam0Panel->Width,Cam0Panel->Bottom);

g->DrawImage(b,destRect);
}

Спасибо за любую помощь.

0

Решение

Я понял это. Массив, хранящий растровые изображения, был инициализирован, но область инициализации была недостаточно постоянной. Таким образом, ссылки, хранящиеся в массиве, были потенциально очищены от мусора. По какой-то странной причине единственным способом, которым это было обнаружено, был вертикальный параметр в вызове drawimage. Как только я исправил инициализацию, вызов drawimage работал правильно.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector