我想从我的甲板图片中取出一张卡片。如果不单独下载每张卡,怎么办?我不想在课堂上初始化所有52张卡片。
现在,我随机化颜色和值,然后在源文件夹中找到图片。但是,我可以从单层图像中取出一张卡吗?
bild = ImageIO.read(new File("source folder/" + colour + value + ".png"));
答案 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%确定我做了所有的数学计算,只是一个快速的参考,你怎么能得到这样的东西。