有谁记得 Windows XP 媒体播放器 截图的特殊现象

查看 66|回复 3
作者:mikewang   
昨天防截图的主题 /t/951728,让我想起了很多年前 Windows XP 中对 Windows Media Player 截屏的神奇现象:
[ol]

  • 播放视频时按下键盘 PrintScreen 截屏,粘贴到画图工具保存为 BMP 文件。打开图片文件,发现播放器内是黑的,看不到视频。

  • 打开 Windows Media Player ,播放另一个视频;接着打开截图 BMP 文件,发现截图里的 “Windows Media Player” 正在播放后方播放器一模一样的内容,仿佛截屏会动了。

  • 截屏里的黑色好像和真正的黑色不一样,截屏播放器的黑色可以透过窗口播放后方视频,而用画图板在截屏的基础上画上一个黑色矩形,那么在播放的视频上真的就产生了一个不透明的黑色遮罩。
    [/ol]
    我只记得当时这么一个现象,给了年幼的我很大震撼,让我一度以为是什么黑魔法(卧槽,BMP 图片会动了)
    不过如今回想起来,还是不大能理解:BMP 应该是一系列 RGB 的组合吧,有什么 RGB 值是能够透过窗口播放视频的呢?
    现在我没有 Windows XP 系统了,还请各位大神帮忙解惑。

    截屏, Windows, BMP, 播放

  • codehz   
    虽然不能确定,但是我可以提供一个可能原因
    视频播放用的是硬件叠加层( https://en.wikipedia.org/wiki/Hardware_overlay )(然后就能获得硬件加速),在前 dwm 时代,硬件叠加层是完全独立于窗口绘制,windows 需要给叠加层设置裁剪区域以“模拟”窗口被别的窗口覆盖的场景,显然截图变黑就很好理解了,因为根本就不在一个图层上(
    至于穿透的话,则应该算是 bug 了,考虑到 mspaint 以前基本上是 gdi 功能演示程序,不排除是 gdi 和硬件叠加层之间的处理问题
    krixaar   
    原理不懂,当年书上还是哪儿看到过通过硬件加速( DirectX )的视频,是播放器窗口那块单纯显示黑色,然后视频图像是 dx 实时渲染到那个位置覆盖在上面的,视频内容对于截图功能来说不可见,想要截图得关掉视频的硬件加速。
    geelaw   
    我记得的,而且最近我忘了在 V2EX 还是知乎提到过。我当时也感觉很震撼,因为我想象中截图之后剪贴板里存放的就是一大堆像素的值,DirectX 绘制的部分变成黑色是可以理解的,但是再用 DirectX 绘制图像会反映在粘贴到的 mspaint.exe 里是无法理解的。
    此外 Windows XP 时代的 mspaint.exe 还有更多神奇的东西,比如调色板其实除了前景色和背景色还有第三个颜色。
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部