java - (Java) 将 1x1 像素转换为 3x3 像素

标签 java

做了一个练习,要求我编写一个程序来读取包含 40,000 位数字的数据文件,并使用这些数字在大小为 200x200 的图形窗口中显示图像。

现在问题要求我用 600x600 屏幕替换之前的 200x200 显示屏,其中每个数字变成 3x3 像素 block 。

//Setting the size of the graphics window
final int WINDOW_DIMENSION = 200;
EasyGraphics generate = new EasyGraphics(WINDOW_DIMENSION,WINDOW_DIMENSION);

//Constructing the arrays
    char[][] firstArray = new char[WINDOW_DIMENSION][WINDOW_DIMENSION];
    char[] secondArray = scan.toCharArray();

    //Using "for" loop to generate 2D array
    int line = WINDOW_DIMENSION;
    int column = -1;

    for (int i = 0; i < WINDOW_DIMENSION*WINDOW_DIMENSION; i++) {
        column++;
        if (i%WINDOW_DIMENSION == 0) {
            line--;
            column = 0;
        }
        firstArray[column][line]=secondArray[i];
    }

    //Plotting the colours for respective range of numbers
    for (int a = 0; a < WINDOW_DIMENSION; a++) {
        for (int b = 0; b < WINDOW_DIMENSION; b++) {
            if (firstArray[a][b]=='0' || firstArray[a][b]=='1' || firstArray[a][b]=='2' || firstArray[a][b]=='3') {
                generate.setColor(66,167,243);
                generate.plot(a,b);
            } 

            else if (firstArray[a][b]=='4' || firstArray[a][b]=='5') {
                generate.setColor(0,255,77);
                generate.plot(a,b);
            } 

            else if (firstArray[a][b]=='6' || firstArray[a][b]=='7') {
                generate.setColor(51,183,91);
                generate.plot(a,b);
            } 

            else if (firstArray[a][b]=='8' || firstArray[a][b]=='9') {
                generate.setColor(102,51,0);
                generate.plot(a,b);
            }
        }
    }
}

有什么解决方案可以解决这个问题吗?

最佳答案

如果没有关于generateplot是什么的更多信息,我们只能给出“通用”答案:无论generate.plot(a,b) 正在做,必须完成 3x3 次。因此,将所有对 generate.plot(a,b); 的调用替换为

就足够了
for (int da=0; da<3; da++) {
    for (int db=0; db<3; db++) {
        generate.plot(a*3+da,b*3+db);
    }
}
<小时/>

编辑:用上面的代码替换每个generate.plot(a,b)

之前:

if (firstArray[a][b]=='0' || firstArray[a][b]=='1' || 
    firstArray[a][b]=='2' || firstArray[a][b]=='3') {
    generate.setColor(66,167,243);
    generate.plot(a,b);
} 

之后:

if (firstArray[a][b]=='0' || firstArray[a][b]=='1' || 
    firstArray[a][b]=='2' || firstArray[a][b]=='3') {
    generate.setColor(66,167,243);
    for (int da=0; da<3; da++) {
        for (int db=0; db<3; db++) {
            generate.plot(a*3+da,b*3+db);
        }
    }
} 

关于java - (Java) 将 1x1 像素转换为 3x3 像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26982851/

相关文章:

java - 如何在 java 中使用 lightcouch api 在 couchdb 中保存批量文档

java - 你会如何检查 ArrayList,Java 中每个元素的最后 2 位数字?

java - 按钮单击 JSF 2.2 时 bean 中的实例变量增量

java - 在 Java 中读取 MIDI 文件

java - 不同对象的 C++ 数组?知道如何在 Java 中实现

java - Espresso 嵌套回收器 View UI 测试

java - 包含流的 takeWhile()

java - 获取 Java 类内部的上下文

java - 如果未完成客户确认会怎样?

java - 画有网格的 JPanel,滚动时导致 CPU 使用率高