DrawImage高度参数不起作用

DrawImage Height Parameter Not Working

本文关键字:不起作用 参数 高度 DrawImage      更新时间:2023-10-16

我正在使用VS2012 c++/cli制作一个WinForms应用程序,并使用DrawImage显示从网络摄像头捕获的高清图像。

这些图像是1920 x 1080位图,我正试图在Panel控件上显示这些位图。面板尺寸为240 x 135(即正好为高清图像的1/8)。

我打电话给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);
    }

谢谢你的帮助。

我想明白了。存储位图的数组已初始化,但初始化的范围不够持久。因此,存储在数组中的引用可能会被垃圾清理掉。出于某种奇怪的原因,唯一能揭示这一点的方法是drawimage调用上的垂直参数。一旦我纠正了初始化,drawimage调用就正常工作了。