标签归档:图像

JUCE组件之Drawable详解

Component组件类只是一个可视的空白矩形区域(前提是paint()中绘制了背景,否则,组件默认是透明的),如果要显示图形图像等等,需在paint()函数中利用Graphics或Path等类的对象进行相关的描述、填充或绘制。而Drawable可绘制类则天然具有绘制的能力,其继承自Component类,相当于一个天然可绘制的组件,或者说,可进行自我绘制的组件。Drawable本身是一个抽象类,有多个派生的功能类,其继承层次如下图所示:

继续阅读JUCE组件之Drawable详解

JUCE图像处理之Image及相关类2-2

获取图像后的显示(绘制该图像):

// 定义并初始化Image对象,图像来源为磁盘中的文件
Image img1 = ImageFileFormat::loadFrom (File::getCurrentWorkingDirectory()
                                        .getChildFile ("img\\demo.jpg"));

g.setImageResamplingQuality (Graphics::highResamplingQuality); // 设置绘制质量

/** drawImageWithin()有7个参数,依次为:要绘制的图像对象,起点x,起点y,宽,高,图像的布局样式(枚举常量)。最后一个参数为是否填充图像的Alpha通道,有默认值,未显式给出 */
g.drawImageWithin (img1, 5, 5, img.getWidth()/2 + 10, getHeight(), 
       RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize);

// 定义并初始化第2个Image对象,图像来源为内存块数据
Image img2 = ImageCache::getFromMemory (DemoImg::imgData_jpg, 
                                        DemoImg::imgData_Size); 

// 内容组件类的paint()方法将图像绘制到界面中
g.drawImageWithin (img2, getWidth() / 2, 0, getWidth() / 2, getHeight(),
       RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize);

继续阅读JUCE图像处理之Image及相关类2-2

JUCE图像处理之Image及相关类2-1

本小节主要讨论以下3个类:

  • Image 图像
  • ImageCache 图像缓存
  • ImageFileFormat 读写图像数据(其下有3个派生类)

计算机绘制(显示)的原理是直接操纵屏幕上的像素,每个像素可由1字节(Alpha)、3字节(RGB)、4字节(ARGB)数据构成,一组按既定方式排列组合的像素数据可构成一副大小固定的图像。用面向对象的方式理解,Image类就可以代表这副图像的基本描述与模型蓝本。亦即:一个Image对象的实质是持有一组像素数据的集合,该集合可代表一副图像。

继续阅读JUCE图像处理之Image及相关类2-1