c#中使用CopyFromScreen截图为什么截不到图片??? 20

Bitmapimg=newBitmap(10,10);Graphicsg=Graphics.FromImage(img);SizemySize=newSize(10,10... Bitmap img = new Bitmap(10, 10);
Graphics g = Graphics.FromImage(img);
Size mySize = new Size(10, 10);
g.CopyFromScreen(this.PointToScreen(this.videoPanel.Location).X + 45,this.PointToScreen(this.videoPanel.Location).Y + 35, 0, 0, mySize);
img.save("c:/a.jpg");为什么保存是黑屏
videPanel面板中有图像
展开
 我来答
石高飞1
2012-03-20 · TA获得超过560个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:245万
展开全部
因为视频输出一般都不是走GDI技术路线(GDI效率比较低,无法适应视频的播放速度),所以视频基本都是硬件加速实现的。所以普通的截屏是截图截不到的。
可能要用DirectX。

或者也可以用 系统自带的屏幕截图,调用API,模拟按键进行屏幕截图,实现。
更多追问追答
追问
DirectX这个得安装到客户机上吧?那系统自带没用过,可否详细下不?急....
追答
DirectX,一般来说绝大多数电脑上都有安装,是系统自带的。
这个本来是微软用来给开发游戏的人去用的。
后来出现了DirectShow。据说比较适合视频。所以。。。
C#要操作DirectX比较困。除非自己P/Invoke。
即使是P/Invoke 也比较困难。好像要找到DLL然后根据API文档,导出DLL函数才OK。

参考资料: 原创

龍过鸡年
2012-03-20 · TA获得超过311个赞
知道小有建树答主
回答量:308
采纳率:100%
帮助的人:369万
展开全部
如果猜得不错,你是在 videoPanel 中播放视频,希望可以截取指定大小的图像
依稀记得,播放设备和程序的窗口本身是无关,是系统在指定句柄的窗口上另外生成的。
所以,你可以尝试截取全屏幕的图像,然后转换坐标,再截取指定位置的图像。
追问
没用的,有视频的就会黑屏.
追答
// vs2010 / Win7 / dotNet 4.0
// 貌似我的可以截取,WMP 和 完美解码 测试成功,你试试
// cmd:Button 代码写在 Form_Load 里
cmd.Click += (obj, args) =>
{
var size = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Size;
var bitmap = new System.Drawing.Bitmap(size.Width, size.Height);
var g = System.Drawing.Graphics.FromImage(bitmap);
g.CopyFromScreen(0, 0, 0, 0, size);
bitmap.Save("C:\\screen.png", System.Drawing.Imaging.ImageFormat.Png);
};
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式