如何从卡座图像中取出特定的卡?

时间:2016-11-08 10:36:06

标签: java

我想从我的甲板图片中取出一张卡片。如果不单独下载每张卡,怎么办?我不想在课堂上初始化所有52张卡片。

现在,我随机化颜色和值,然后在源文件夹中找到图片。但是,我可以从单层图像中取出一张卡吗?

bild = ImageIO.read(new File("source folder/" + colour + value + ".png"));      

2 个答案:

答案 0 :(得分:0)

您仍然需要加载整个图像,但在您进行绘图时,只需使用

即可
g.drawImage(Image img, int dstx1, int dsty1, int dstx2, int dsty2, int srcx1, int srcy1, int srcx2, int srcy2, ImageObserver observer);

src(= source)值将是图像中的左上角和右下角坐标,用于定义要绘制的部分,而dst(= destination)值将决定绘制的位置。

答案 1 :(得分:0)

您应该初始化它们,但不必手动完成。

您应该创建一个包含每张卡片的图像并加载它。 BufferedImage课程为您提供getSubImage(int x, int y, int w, int h);并返回BufferedImage.

的一张(一张卡片)

您可以在循环浏览套牌图像的同时填充一系列卡片。

    for(int i = 0; i<4; i++){
        for(int j = 0; j < 13; j++){
            deckArray[13 * i + j] == image.getSubImage(i * cardWidth,
                                                       j * cardHeight, 
                                                       cardWidth, 
                                                       cardHeight);
        }
    }

像这样的东西。请注意,我假设有4 * 13张图片,并且它们之间没有空格。  您将不得不找到一种方法来跟踪您的卡片,无论您如何存储它们,哪一个都在您的阵列中,因为您绝对不想要的是每次您想要使用它时加载图像。

它没有经过测试,也没有100%确定我做了所有的数学计算,只是一个快速的参考,你怎么能得到这样的东西。