我正在制作一个WinForms应用程序,使用VS2012 c++/cli,并使用DrawImage显示从摄像头捕捉到的高清图像。
这些图像是1920 x 1080位图,我试图在面板控件上显示。该小组为240 x 135 (即准确地说是HD图像的1/8 )。
我打电话给DrawImage的方式如下:
System::Drawing::Rectangle destRect = System::Drawing::Rectangle(0,0,Cam0Panel->Width,Cam0Panel->Height);
g->DrawImage(b,destRect);这应该指定在面板上的相对0,0位置绘制图像,并将图像大小为240x135。但是,图像将不会显示。
如果更改高度参数以指定Panel->底部(这是app -~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);
}谢谢你的帮助。
发布于 2015-04-01 18:44:34
我想出来了。存储位图的数组已初始化,但初始化范围不够持久。因此,存储在数组中的引用可能会被垃圾清除。由于一些奇怪的原因,这是唯一的方式揭示这是垂直参数的绘图图像调用。一旦我纠正了初始化,绘图调用就可以正常工作了。
https://stackoverflow.com/questions/29350750
复制相似问题