delphi 我已经读取视频成功,但是在视频显示到panel时 应该怎么显示呢,我写的代码如下 请高手指教!! 150
VideoDc:=GetDc(VideoPanl1.Handle);pBuf:=AllocMem(BufLength);p:=AllocMem(ImgBufLength)...
VideoDc := GetDc(VideoPanl1.Handle);
pBuf := AllocMem(BufLength);
p := AllocMem(ImgBufLength);
pBMIInfo := AllocMem(sizeof(TBITMAPINFO)+ (255 * sizeof(TRGBQuad)));
pBMIInfo^.bmiHeader.biSize := sizeof(BITMAPINFOHEADER);
pBMIInfo^.bmiHeader.biWidth := 617 ;
pBMIInfo^.bmiHeader.biHeight := 481 div 2;
pBMIInfo^.bmiHeader.biPlanes := 1;
pBMIInfo^.bmiHeader.biBitCount := 24;
pBMIInfo^.bmiHeader.biCompression := BI_RGB;
pBMIInfo^.bmiHeader.biSizeImage := 0;
pBMIInfo^.bmiHeader.biXPelsPerMeter := 0;
pBMIInfo^.bmiHeader.biYPelsPerMeter := 0;
pBMIInfo^.bmiHeader.biClrUsed := 0;
pBMIInfo^.bmiHeader.biClrImportant := 0;
pBMIInfo^.bmiHeader.biBitCount:=24;
pBMIInfo^.bmiHeader.biClrImportant:=0;
pBMIInfo^.bmiHeader.biClrUsed:=0;
pBMIInfo^.bmiHeader.biCompression:=BI_RGB;
pBMIInfo^.bmiHeader.biPlanes:=1;
pBMIInfo^.bmiHeader.biSize:=40;
pBMIInfo^.bmiHeader.biHeight:=cy;
pBMIInfo^.bmiHeader.biWidth:=cx;
pBMIInfo^.bmiHeader.biSizeImage:=cx*cy*3;
pBMIInfo^.bmiHeader.biXPelsPerMeter:=cy;
pBMIInfo^.bmiHeader.biYPelsPerMeter:=cx;
SetStretchBltMode(VideoDC, COLORONCOLOR);
SetStretchBltMode(VideoDC, HALFTONE);
//CGDataTransform(prgb , LineAddr + Num*BufLength, OUTPUT_WINDOW_WIDTH, OUTPUT_WINDOW_HEIGHT div 2, 24, True);
StretchDIBits(VideoDC, 0, 0, VideoPanl1.Width, VideoPanl1.Height,
0, 0, pBMIInfo^.bmiHeader.biWidth, pBMIInfo^.bmiHeader.biHeight,
prgb,pBMIInfo^, DIB_RGB_COLORS, SRCCOPY);
我是在一个插件的事件中实现这段代码 但却一直都不显示,抓图啊什么滴 都能实现 展开
pBuf := AllocMem(BufLength);
p := AllocMem(ImgBufLength);
pBMIInfo := AllocMem(sizeof(TBITMAPINFO)+ (255 * sizeof(TRGBQuad)));
pBMIInfo^.bmiHeader.biSize := sizeof(BITMAPINFOHEADER);
pBMIInfo^.bmiHeader.biWidth := 617 ;
pBMIInfo^.bmiHeader.biHeight := 481 div 2;
pBMIInfo^.bmiHeader.biPlanes := 1;
pBMIInfo^.bmiHeader.biBitCount := 24;
pBMIInfo^.bmiHeader.biCompression := BI_RGB;
pBMIInfo^.bmiHeader.biSizeImage := 0;
pBMIInfo^.bmiHeader.biXPelsPerMeter := 0;
pBMIInfo^.bmiHeader.biYPelsPerMeter := 0;
pBMIInfo^.bmiHeader.biClrUsed := 0;
pBMIInfo^.bmiHeader.biClrImportant := 0;
pBMIInfo^.bmiHeader.biBitCount:=24;
pBMIInfo^.bmiHeader.biClrImportant:=0;
pBMIInfo^.bmiHeader.biClrUsed:=0;
pBMIInfo^.bmiHeader.biCompression:=BI_RGB;
pBMIInfo^.bmiHeader.biPlanes:=1;
pBMIInfo^.bmiHeader.biSize:=40;
pBMIInfo^.bmiHeader.biHeight:=cy;
pBMIInfo^.bmiHeader.biWidth:=cx;
pBMIInfo^.bmiHeader.biSizeImage:=cx*cy*3;
pBMIInfo^.bmiHeader.biXPelsPerMeter:=cy;
pBMIInfo^.bmiHeader.biYPelsPerMeter:=cx;
SetStretchBltMode(VideoDC, COLORONCOLOR);
SetStretchBltMode(VideoDC, HALFTONE);
//CGDataTransform(prgb , LineAddr + Num*BufLength, OUTPUT_WINDOW_WIDTH, OUTPUT_WINDOW_HEIGHT div 2, 24, True);
StretchDIBits(VideoDC, 0, 0, VideoPanl1.Width, VideoPanl1.Height,
0, 0, pBMIInfo^.bmiHeader.biWidth, pBMIInfo^.bmiHeader.biHeight,
prgb,pBMIInfo^, DIB_RGB_COLORS, SRCCOPY);
我是在一个插件的事件中实现这段代码 但却一直都不显示,抓图啊什么滴 都能实现 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询