Module  java.desktop
软件包  java.awt.image

Class MemoryImageSource

  • All Implemented Interfaces:
    ImageProducer


    public class MemoryImageSource
    extends Object
    implements ImageProducer
    该类是ImageProducer接口的一个实现,它使用一个数组为图像生成像素值。 这是一个例子,它计算出一个100x100的图像,表示沿着X轴从黑色到蓝色的渐变,沿着Y轴从黑色渐变成红色:
       int w = 100; int h = 100; int pix[] = new int[w * h]; int index = 0; for (int y = 0; y < h; y++) { int red = (y * 255) / (h - 1); for (int x = 0; x < w; x++) { int blue = (x * 255) / (w - 1); pix[index++] = (255 << 24) | (red << 16) | blue; } } Image img = createImage(new MemoryImageSource(w, h, pix, 0, w));  
    MemoryImageSource还能够管理随时间变化的存储器映像,以允许动画或自定义渲染。 下面是一个示例,显示如何设置数据中的动画源和信号变化(由Gart Dickie的MemoryAnimationSourceDemo改编):
       int pixels[]; MemoryImageSource source; public void init() { int width = 50; int height = 50; int size = width * height; pixels = new int[size]; int value = getBackground().getRGB(); for (int i = 0; i < size; i++) { pixels[i] = value; } source = new MemoryImageSource(width, height, pixels, 0, width); source.setAnimated(true); image = createImage(source); } public void run() { Thread me = Thread.currentThread( ); me.setPriority(Thread.MIN_PRIORITY); while (true) { try { Thread.sleep(10); } catch( InterruptedException e ) { return; } // Modify the values in the pixels array at (x, y, w, h) // Send the new data to the interested ImageConsumers source.newPixels(x, y, w, h); } }  
    另请参见:
    ImageProducer
    • 构造方法摘要

      构造方法  
      Constructor 描述
      MemoryImageSource​(int w, int h, int[] pix, int off, int scan)
      构造一个ImageProducer对象,它使用默认RGB ColorModel中的整数数组来生成一个Image对象的数据。
      MemoryImageSource​(int w, int h, int[] pix, int off, int scan, Hashtable<?,?> props)
      构造一个ImageProducer对象,它使用默认RGB ColorModel中的整数数组来生成一个Image对象的数据。
      MemoryImageSource​(int w, int h, ColorModel cm, byte[] pix, int off, int scan)
      构造一个ImageProducer对象,它使用一个字节数组来生成一个Image对象的数据。
      MemoryImageSource​(int w, int h, ColorModel cm, byte[] pix, int off, int scan, Hashtable<?,?> props)
      构造一个ImageProducer对象,它使用一个字节数组来生成一个Image对象的数据。
      MemoryImageSource​(int w, int h, ColorModel cm, int[] pix, int off, int scan)
      构造一个ImageProducer对象,该对象使用整数数组来生成Image对象的数据。
      MemoryImageSource​(int w, int h, ColorModel cm, int[] pix, int off, int scan, Hashtable<?,?> props)
      构造一个ImageProducer对象,该对象使用整数数组来生成Image对象的数据。
    • 方法摘要

      所有方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      void addConsumer​(ImageConsumer ic)
      将ImageConsumer添加到对该图像的数据感兴趣的用户列表中。
      boolean isConsumer​(ImageConsumer ic)
      确定ImageConsumer是否在目前对该图像的数据感兴趣的消费者列表中。
      void newPixels​()
      向目前对此图像的数据感兴趣的任何ImageConsumers发送一个全新的像素缓冲区,并通知他们动画帧完成。
      void newPixels​(byte[] newpix, ColorModel newmodel, int offset, int scansize)
      更改新的字节数组来保存此图像的像素。
      void newPixels​(int[] newpix, ColorModel newmodel, int offset, int scansize)
      更改一个新的int数组来保存此图像的像素。
      void newPixels​(int x, int y, int w, int h)
      将像素缓冲区的矩形区域发送到当前对该图像的数据感兴趣的任何ImageConsumers,并通知它们动画帧完成。
      void newPixels​(int x, int y, int w, int h, boolean framenotify)
      将像素缓冲区的矩形区域发送到当前对该图像的数据感兴趣的任何ImageConsumers。
      void removeConsumer​(ImageConsumer ic)
      从对该图像的数据感兴趣的消费者列表中删除一个ImageConsumer。
      void requestTopDownLeftRightResend​(ImageConsumer ic)
      请求给定的ImageConsumer具有从上到下的顺序递送多次的图像数据。
      void setAnimated​(boolean animated)
      根据动画参数,将此内存图像更改为多帧动画或单帧静态图像。
      void setFullBufferUpdates​(boolean fullbuffers)
      指定是否应始终通过发送像素的完整缓冲区来更新此动画内存映像。
      void startProduction​(ImageConsumer ic)
      将ImageConsumer添加到对该图像的数据感兴趣的用户列表中,并通过ImageConsumer界面立即开始传送图像数据。
    • 构造方法详细信息

      • MemoryImageSource

        public MemoryImageSource​(int w,
                                 int h,
                                 ColorModel cm,
                                 byte[] pix,
                                 int off,
                                 int scan)
        构造一个ImageProducer对象,它使用一个字节数组来生成一个Image对象的数据。
        参数
        w - 像素矩形的宽度
        h - 像素矩形的高度
        cm - 指定的 ColorModel
        pix - 像素数组
        off - 将阵列的偏移量存储在第一个像素的位置
        scan - 从阵列中的一行像素到下一个像素的距离
        另请参见:
        Component.createImage(java.awt.image.ImageProducer)
      • MemoryImageSource

        public MemoryImageSource​(int w,
                                 int h,
                                 ColorModel cm,
                                 byte[] pix,
                                 int off,
                                 int scan,
                                 Hashtable<?,?> props)
        构造一个ImageProducer对象,它使用一个字节数组来生成一个Image对象的数据。
        参数
        w - 像素矩形的宽度
        h - 像素矩形的高度
        cm - 指定的 ColorModel
        pix - 像素数组
        off - 将阵列的偏移量存储在第一个像素的位置
        scan - 从阵列中的一行像素到下一个像素的距离
        props - ImageProducer用于处理图像的属性列表
        另请参见:
        Component.createImage(java.awt.image.ImageProducer)
      • MemoryImageSource

        public MemoryImageSource​(int w,
                                 int h,
                                 ColorModel cm,
                                 int[] pix,
                                 int off,
                                 int scan)
        构造一个ImageProducer对象,该对象使用整数数组来生成Image对象的数据。
        参数
        w - 像素矩形的宽度
        h - 像素矩形的高度
        cm - 指定的 ColorModel
        pix - 像素数组
        off - 将阵列的偏移量存储在第一个像素的位置
        scan - 从阵列中的一行像素到下一个像素的距离
        另请参见:
        Component.createImage(java.awt.image.ImageProducer)
      • MemoryImageSource

        public MemoryImageSource​(int w,
                                 int h,
                                 ColorModel cm,
                                 int[] pix,
                                 int off,
                                 int scan,
                                 Hashtable<?,?> props)
        构造一个ImageProducer对象,该对象使用整数数组来生成Image对象的数据。
        参数
        w - 像素矩形的宽度
        h - 像素矩形的高度
        cm - 指定的 ColorModel
        pix - 像素数组
        off - 将阵列的偏移量存储在第一个像素的位置
        scan - 从阵列中的一行像素到下一个像素的距离
        props - ImageProducer用于处理图像的属性列表
        另请参见:
        Component.createImage(java.awt.image.ImageProducer)
      • MemoryImageSource

        public MemoryImageSource​(int w,
                                 int h,
                                 int[] pix,
                                 int off,
                                 int scan)
        构造一个ImageProducer对象,它使用默认RGB ColorModel中的整数数组来生成一个Image对象的数据。
        参数
        w - 像素矩形的宽度
        h - 像素矩形的高度
        pix - 像素数组
        off - 将阵列的偏移量存储在第一个像素的位置
        scan - 从阵列中的一行像素到下一个像素的距离
        另请参见:
        Component.createImage(java.awt.image.ImageProducer)ColorModel.getRGBdefault()
      • MemoryImageSource

        public MemoryImageSource​(int w,
                                 int h,
                                 int[] pix,
                                 int off,
                                 int scan,
                                 Hashtable<?,?> props)
        构造一个ImageProducer对象,它使用默认RGB ColorModel中的整数数组来生成一个Image对象的数据。
        参数
        w - 像素矩形的宽度
        h - 像素矩形的高度
        pix - 像素数组
        off - 阵列中存储第一个像素的位置的偏移量
        scan - 阵列中一行像素到下一个像素的距离
        props - ImageProducer用于处理图像的属性列表
        另请参见:
        Component.createImage(java.awt.image.ImageProducer)ColorModel.getRGBdefault()
    • 方法详细信息

      • isConsumer

        public boolean isConsumer​(ImageConsumer ic)
        确定ImageConsumer是否在目前对该图像的数据感兴趣的消费者列表中。
        Specified by:
        isConsumer在接口 ImageProducer
        参数
        ic - 指定的 ImageConsumer
        结果
        true如果ImageConsumer在列表中; 否则为false
        另请参见:
        ImageConsumer
      • removeConsumer

        public void removeConsumer​(ImageConsumer ic)
        从对该图像的数据感兴趣的消费者列表中删除一个ImageConsumer。
        Specified by:
        removeConsumer在接口 ImageProducer
        参数
        ic - 指定的 ImageConsumer
        另请参见:
        ImageConsumer
      • startProduction

        public void startProduction​(ImageConsumer ic)
        将ImageConsumer添加到对该图像的数据感兴趣的用户列表中,并通过ImageConsumer界面立即开始传送图像数据。
        Specified by:
        startProduction在接口 ImageProducer
        参数
        ic - 通过ImageConsumer界面指定的 ImageConsumer图像数据。
        另请参见:
        ImageConsumer
      • setAnimated

        public void setAnimated​(boolean animated)
        根据动画参数,将此内存图像更改为多帧动画或单帧静态图像。

        应该在构建MemoryImageSource之后立即调用此方法,并在使用它创建映像之前立即调用该方法,以确保所有ImageConsumers都将接收到正确的多帧数据。 如果在设置此标志之前将ImageConsumer添加到此ImageProducer,则该ImageConsumer将仅在连接时可以看到像素数据的快照。

        参数
        animated - true如果图像是多帧动画
      • setFullBufferUpdates

        public void setFullBufferUpdates​(boolean fullbuffers)
        指定是否应始终通过发送像素的完整缓冲区来更新此动画内存映像。 如果没有通过setAnimated()方法打开动画标志,则忽略此标志。

        应该在构建MemoryImageSource之后立即调用此方法,并在使用它创建映像之前立即调用该方法,以确保所有ImageConsumers都将收到正确的像素传送提示。

        参数
        fullbuffers - true如果始终发送完整的像素缓冲区
        另请参见:
        setAnimated(boolean)
      • newPixels

        public void newPixels​(int x,
                              int y,
                              int w,
                              int h)
        将像素缓冲区的矩形区域发送到当前对该图像的数据感兴趣的任何ImageConsumers,并通知它们动画帧完成。 该方法只有通过setAnimated()方法打开动画标志才有效果。 如果使用setFullBufferUpdates()方法打开了完整的缓冲区更新标志,则矩形参数将被忽略,并且始终将发送整个缓冲区。
        参数
        x - 要发送的像素矩形的左上角的x坐标
        y - 要发送的像素矩形的左上角的y坐标
        w - 要发送的像素矩形的宽度
        h - 要发送的像素矩形的高度
        另请参见:
        newPixels(int, int, int, int, boolean)ImageConsumersetAnimated(boolean)setFullBufferUpdates(boolean)
      • newPixels

        public void newPixels​(int x,
                              int y,
                              int w,
                              int h,
                              boolean framenotify)
        将像素缓冲区的矩形区域发送到当前对该图像的数据感兴趣的任何ImageConsumers。 如果framenotify参数为true,那么还会通知消费者动画帧已完成。 该方法只有通过setAnimated()方法打开动画标志才有效果。 如果使用setFullBufferUpdates()方法打开了完整的缓冲区更新标志,则矩形参数将被忽略,并且始终将发送整个缓冲区。
        参数
        x - 要发送的像素矩形的左上角的x坐标
        y - 要发送的像素矩形的左上角的y坐标
        w - 要发送的像素的矩形的宽度
        h - 要发送的像素矩形的高度
        framenotify - true如果消费者应该发送一个 SINGLEFRAMEDONE通知
        另请参见:
        ImageConsumersetAnimated(boolean)setFullBufferUpdates(boolean)
      • newPixels

        public void newPixels​(byte[] newpix,
                              ColorModel newmodel,
                              int offset,
                              int scansize)
        更改新的字节数组来保存此图像的像素。 如果通过setAnimated()方法打开了动画标志,则新像素将立即传递给当前对该图像的数据感兴趣的任何ImageConsumers。
        参数
        newpix - 新的像素阵列
        newmodel - 指定的 ColorModel
        offset - 数组中的偏移量
        scansize - 从阵列中的一行像素到下一个像素的距离
        另请参见:
        newPixels(int, int, int, int, boolean)setAnimated(boolean)
      • newPixels

        public void newPixels​(int[] newpix,
                              ColorModel newmodel,
                              int offset,
                              int scansize)
        更改一个新的int数组来保存此图像的像素。 如果通过setAnimated()方法打开了动画标志,则新像素将立即传递给当前对该图像的数据感兴趣的任何ImageConsumers。
        参数
        newpix - 新的像素阵列
        newmodel - 指定的 ColorModel
        offset - 数组中的偏移量
        scansize - 阵列中一行像素到下一行的距离
        另请参见:
        newPixels(int, int, int, int, boolean)setAnimated(boolean)