870920 Menu

JUCE小Tips:实现抓屏功能

有朋友Email询问,使用C++语言和JUCE类库做GUI编程时,如何实现抓屏功能(允许用户将程序界面的某个区域或整个界面保存为图像文件)。这个问题很简单,核心思路有二:

  1. JUCE所有的可视化元素统统继承自Component类,该类有个方法:createComponentSnapshot(),返回值为Image对象,即该方法可将调用组件的所有显示内容生成为一个Image图像。其3个参数可设置:生成当前屏幕所显示的整个区域、某个特定区域,是否生成该组件的所有区域(包括屏幕未显示出来的),所生成的图像是否进行缩放及缩放因数(1.0f为原图大小)。
  2. 使用ImageFileFormat类的某个子类,其对象调用writeImageToStream()即可将图像数据写入给定的文件输出流中。

由于Component类的任何对象均可设置透明度,因此可将截屏保存为png格式的图像。使用ImageFileFormat的派生类PNGImageFormat的对象即可。

代码示例: