Javafx 2 JavaFx中图像的子矩形

Javafx 2 JavaFx中图像的子矩形,javafx-2,Javafx 2,我有一个javafx.scene.image.image,需要创建一个带有子矩形的新图像。我试过PixelReader.getPixels,但它要求使用可写的PixelFormat,我不知道如何使用它 我建议您做的是实例化一个仅与子矩形大小相同的,并使用其在那里绘制源图像的一部分。完成此操作后,像使用ImageView一样使用画布 我在一个课堂上做这件事,把一个图像切成几片,然后给你 基本上,这些步骤是: 创建子矩形大小的画布节点 获取该画布的GraphicsContext 使用图像作为源,在画

我有一个javafx.scene.image.image,需要创建一个带有子矩形的新图像。我试过PixelReader.getPixels,但它要求使用可写的PixelFormat,我不知道如何使用它

我建议您做的是实例化一个仅与子矩形大小相同的,并使用其在那里绘制源图像的一部分。完成此操作后,像使用ImageView一样使用画布

我在一个课堂上做这件事,把一个图像切成几片,然后给你

基本上,这些步骤是:

  • 创建子矩形大小的画布节点
  • 获取该画布的GraphicsContext
  • 使用图像作为源,在画布上绘制
  • 在场景中插入画布,或在适当的位置插入画布
  • 这是用于绘制图形的图形上下文:

    public void drawImage(Image img,
                 double srcX,
                 double srcY,
                 double srcWidth,
                 double srcHeight,
                 double destX,
                 double destY,
                 double destWidth,
                 double destHeight)
    
    以下是我用Scala绘制图像“切片”的代码:

    导入javafx.scene.image.image
    导入javafx.scene.canvas.canvas
    类切片器(val img:Image,val xAmount:Int,val yAmount:Int){
    val sliceWidth=img.getWidth()/xAmount
    val sliceHeight=img.getHeight()/yAmount
    def切片(x:Int,y:Int):画布={
    val画布=新画布(切片宽度、切片高度)
    val grContext=canvas.getGraphicsContext2D()
    val(sourceX,sourceY)=坐标fsliceat(x,y)
    val(destX,destY)=(0,0)
    grContext.drawImage(img,
    sourceX、sourceY、切片宽度、切片高度、,
    destX、destY、切片宽度、切片高度)
    帆布
    }
    def coordinatesOfSliceAt(x:Int,y:Int):(Int,Int)={
    val coordX=((x-1)*切片宽度).toInt
    val coordY=((y-1)*切片高度).toInt
    (coordX,coordY)
    }
    }
    
    当我遇到这个问题时,我想到了这个解决方案:


    相关的部分是,他们将原始图像的片段绘制到画布上。因此,无需处理像素阅读器或写入器。

    您可以发布一些可执行的示例代码吗?我已经完成了,不需要直接与
    可写像素格式
    交互。