所有类


java.awt.image
类 WritableRaster

java.lang.Object
  继承者 java.awt.image.Raster
      继承者 java.awt.image.WritableRaster

public class WritableRaster
   
   
   
   
   
extends Raster

此类扩展了 Raster 以提供像素写入功能。关于 Raster 如何存储像素的描述,请参阅 Raster 的类注释。

此类的构造方法声明为 protected。要实例化 WritableRaster,需使用 Raster 类中的一个 createWritableRaster 工厂方法。


字段摘要
 
从类 java.awt.image.Raster 继承的字段
dataBuffer, height, minX, minY, numBands, numDataElements, parent, sampleModel, sampleModelTranslateX, sampleModelTranslateY, width
 
构造方法摘要
protected WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin)
          构造具有给定 SampleModel 和 DataBuffer 的 WritableRaster。
protected WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion, Point sampleModelTranslate, WritableRaster parent)
          构造具有给定 SampleModel、DataBuffer 和父亲的 WritableRaster。
protected WritableRaster(SampleModel sampleModel, Point origin)
          构造具有给定 SampleModel 的 WritableRaster。
 
方法摘要
 WritableRaster createWritableChild(int parentX, int parentY, int w, int h, int childMinX, int childMinY, int[] bandList)
          返回新的 WritableRaster,它共享此 WritableRaster 的全部或部分 DataBuffer。
 WritableRaster createWritableTranslatedChild(int childMinX, int childMinY)
          在不同的位置上创建一个与此 WritableRaster 具有相同大小、SampleModel 和 DataBuffer 的 WritableRaster。
 WritableRaster getWritableParent()
          返回此 WritableRaster 的父 WritableRaster(如果有),否则返回 null。
 void setDataElements(int x, int y, int w, int h, Object inData)
          为类型 TransferType 基本数组中的像素矩形设置数据。
 void setDataElements(int x, int y, Object inData)
          为类型 TransferType 基本数组中的单个像素设置数据。
 void setDataElements(int x, int y, Raster inRaster)
          为输入 Raster 中的像素矩形设置数据。
 void setPixel(int x, int y, double[] dArray)
          使用输入样本的 double 型数组设置 DataBuffer 中的像素。
 void setPixel(int x, int y, float[] fArray)
          使用输入样本的 float 型数组设置 DataBuffer 中的像素。
 void setPixel(int x, int y, int[] iArray)
          使用输入样本的 int 型数组设置 DataBuffer 中的像素。
 void setPixels(int x, int y, int w, int h, double[] dArray)
          为每个数组元素包含一个样本的 double 型数组中的像素矩形设置所有样本。
 void setPixels(int x, int y, int w, int h, float[] fArray)
          为每个数组元素包含一个样本的 float 型数组中的像素矩形设置所有样本。
 void setPixels(int x, int y, int w, int h, int[] iArray)
          为每个数组元素包含一个样本的 int 型数组中的像素矩形设置所有样本。
 void setRect(int dx, int dy, Raster srcRaster)
          将像素从 Raster srcRaster 复制到此 WritableRaster。
 void setRect(Raster srcRaster)
          将像素从 Raster srcRaster 复制到此 WritableRaster。
 void setSample(int x, int y, int b, double s)
          使用 double 型的输入样本,在指定 band 中为位于 DataBuffer 中 (x,y) 位置的像素设置样本。
 void setSample(int x, int y, int b, float s)
          使用 float 型的输入样本,在指定 band 中为位于 DataBuffer 中 (x,y) 位置的像素设置样本。
 void setSample(int x, int y, int b, int s)
          使用 int 型的输入样本,在指定 band 中为位于 DataBuffer 中 (x,y) 位置的像素设置样本。
 void setSamples(int x, int y, int w, int h, int b, double[] dArray)
          为每个数组元素包含一个样本的 double 型数组中指定的像素矩形在指定 band 中设置样本。
 void setSamples(int x, int y, int w, int h, int b, float[] fArray)
          为每个数组元素包含一个样本的 float 型数组中指定的像素矩形在指定 band 中设置样本。
 void setSamples(int x, int y, int w, int h, int b, int[] iArray)
          为每个数组元素包含一个样本的 int 型数组中指定的像素矩形在指定 band 中设置样本。
 
从类 java.awt.image.Raster 继承的方法
createBandedRaster, createBandedRaster, createBandedRaster, createChild, createCompatibleWritableRaster, createCompatibleWritableRaster, createCompatibleWritableRaster, createCompatibleWritableRaster, createInterleavedRaster, createInterleavedRaster, createInterleavedRaster, createPackedRaster, createPackedRaster, createPackedRaster, createPackedRaster, createRaster, createTranslatedChild, createWritableRaster, createWritableRaster, getBounds, getDataBuffer, getDataElements, getDataElements, getHeight, getMinX, getMinY, getNumBands, getNumDataElements, getParent, getPixel, getPixel, getPixel, getPixels, getPixels, getPixels, getSample, getSampleDouble, getSampleFloat, getSampleModel, getSampleModelTranslateX, getSampleModelTranslateY, getSamples, getSamples, getSamples, getTransferType, getWidth
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

WritableRaster

protected WritableRaster(SampleModel sampleModel,
                         Point origin)
构造具有给定 SampleModel 的 WritableRaster。WritableRaster 的左上角为原点,其大小与 SampleModel 相同。自动创建一个大小足以描述 WritableRaster 的 DataBuffer。

参数:
sampleModel - 指定布局的 SampleModel。
origin - 指定原点的 Point。
抛出:
RasterFormatException - 如果 origin.x + sampleModel.getWidth() 或者 origin.y + sampleModel.getHeight() 的计算结果整数溢出

WritableRaster

protected WritableRaster(SampleModel sampleModel,
                         DataBuffer dataBuffer,
                         Point origin)
构造具有给定 SampleModel 和 DataBuffer 的 WritableRaster。WritableRaster 的左上角为原点,其大小与 SampleModel 相同。DataBuffer 是未初始化的,它必须与 SampleModel 兼容。

参数:
sampleModel - 指定布局的 SampleModel。
dataBuffer - 包含图像数据的 DataBuffer。
origin - 指定原点的 Point。
抛出:
RasterFormatException - 如果 origin.x + sampleModel.getWidth()origin.y + sampleModel.getHeight() 的计算结果整数溢出

WritableRaster

protected WritableRaster(SampleModel sampleModel,
                         DataBuffer dataBuffer,
                         Rectangle aRegion,
                         Point sampleModelTranslate,
                         WritableRaster parent)
构造具有给定 SampleModel、DataBuffer 和父亲的 WritableRaster。aRegion 指定新 Raster 的边界矩形。当向基 Raster 的坐标系统转换时,基 Raster 必须包含 aRegion。(基 Raster 是 Raster 的祖先,它没有父亲)sampleModelTranslate 指定新 Raster 的 sampleModelTranslateX 值和 sampleModelTranslateY 值。 注意,此构造方法通常应该由其他构造方法或创建方法调用,不应该直接使用。

参数:
sampleModel - 指定布局的 SampleModel。
dataBuffer - 包含图像数据的 DataBuffer。
aRegion - 指定图像区域的 Rectangle。
sampleModelTranslate - 指定从 SampleModel 向 Raster 进行坐标转换的 Point。
parent - 此 raster 的父亲(如果有)。
抛出:
RasterFormatException - 如果 aRegion 的宽度和高度小于等于 0,或者 aRegion.x + aRegion.widthaRegion.y + aRegion.height 的计算结果整数溢出
方法详细信息

getWritableParent

public WritableRaster getWritableParent()
返回此 WritableRaster 的父 WritableRaster(如果有),否则返回 null。

返回:
WritableRaster 的父亲,或 null

createWritableTranslatedChild

public WritableRaster createWritableTranslatedChild(int childMinX,
                                                    int childMinY)
在不同的位置上创建一个与此 WritableRaster 具有相同大小、SampleModel 和 DataBuffer 的 WritableRaster。新 WritableRaster 将具有对当前 WritableRaster 的引用,可以通过其 getParent() 和 getWritableParent() 方法进行访问。

参数:
childMinX - 新 Raster 左上角的 X 坐标。
childMinY - 新 Raster 左上角的 Y 坐标。
返回:
除了指定的位置不同外,与此 WritableRaster 相同的 WritableRaster
抛出:
RasterFormatException - 如果 childMinX + this.getWidth()childMinY + this.getHeight() 的计算结果整数溢出

createWritableChild

public WritableRaster createWritableChild(int parentX,
                                          int parentY,
                                          int w,
                                          int h,
                                          int childMinX,
                                          int childMinY,
                                          int[] bandList)
返回新的 WritableRaster,它共享此 WritableRaster 的全部或部分 DataBuffer。新 WritableRaster 将具有对当前 WritableRaster 的引用,可以通过其 getParent() 和 getWritableParent() 方法进行访问。

parentX、parentY、width 和 height 参数在此 WritableRaster 坐标空间中形成一个 Rectangle,指示要共享的像素区域。如果此 Rectangle 没有包含在当前 WritableRaster 的边界内部,则会抛出错误。

新 WritableRaster 可以另外转换到与当前 WritableRaster 不同的平面坐标系统中。childMinX 和 childMinY 参数给定返回的 WritableRaster 左上角像素的新 (x, y) 坐标;新 WritableRaster 的坐标 (childMinX, childMinY) 将映射到当前 WritableRaster 中相同像素的坐标 (parentX, parentY)。

新 WritableRaster 可以定义为只包含当前 WritableRaster band 的一个子集,该子集可能通过 bandList 参数进行了重新排序。如果 bandList 为 null,则它将以其当前顺序包含当前 WritableRaster 的所有 band。

要创建新的 WritableRaster,使其包含当前 WritableRaster 的子区域,但共享其坐标系和 band,此方法在调用时应该令 childMinX 等于 parentX,childMinY 等于 parentY 且 bandList 为 null。

参数:
parentX - 此 WritableRaster 坐标中左上角的 X 坐标。
parentY - 此 WritableRaster 坐标中左上角的 Y 坐标。
w - 从 (parentX, parentY) 开始的区域宽度。
w - 从 (parentX, parentY) 开始的区域高度。
childMinX - 返回的 WritableRaster 左上角的 X 坐标。
childMinY - 返回的 WritableRaster 左上角的 Y 坐标。
bandList - band 的索引数组,取 null 则使用所有 band。
返回:
WritableRaster,它共享此 WritableRaster 全部或部分 DataBuffer
抛出:
RasterFormatException - 如果子区域位于光栅边界的外部。
RasterFormatException - 如果 wh 小于等于 0,或者 parentX + wparentY + hchildMinX + wchildMinY + h 中任何一个的计算结果整数溢出

setDataElements

public void setDataElements(int x,
                            int y,
                            Object inData)
为类型 TransferType 基本数组中的单个像素设置数据。对于 Java 2D(tm) API 所支持的图像数据,这将是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT 或 DataBuffer.TYPE_DOUBLE 中的一个。数组中的数据可以是打包的格式,从而提高数据传输的效率。如果坐标不在边界内部,或者 inData 的大小不够容纳像素数据,则会抛出 ArrayIndexOutOfBoundsException。但是,不保证显示的边界检查。如果输入对象不为 null 且引用 TransferType 数组之外的任何数组,则会抛出 ClassCastException。

参数:
x - 像素位置的 X 坐标。
y - 像素位置的 Y 坐标。
inData - 引用类型数组的对象,该类型由 getTransferType() 定义,并且其长度 getNumDataElements() 包含到 x,y 位置的像素数据。
抛出:
ArrayIndexOutOfBoundsException - 如果坐标不在边界内部,或者 inData 太小不能容纳输入。
另请参见:
SampleModel.setDataElements(int, int, Object, DataBuffer)

setDataElements

public void setDataElements(int x,
                            int y,
                            Raster inRaster)
为输入 Raster 中的像素矩形设置数据。输入的 Raster 必须与此 WritableRaster 兼容,即它们必须具有相同的 band,对应 band 的每个样本必须具有相同的位数,TransferType 和 NumDataElement 必须相同,并且 getDataElements/setDataElements 使用的打包方式必须一致。如果坐标不在边界内部,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不保证显示的边界检查。

参数:
x - 像素位置的 X 坐标。
y - 像素位置的 Y 坐标。
inRaster - 包含 x,y 位置数据的 Raster。
抛出:
NullPointerException - 如果 inRaster 为 null。
ArrayIndexOutOfBoundsException - 如果坐标不在边界内部。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部