从内到外在正方形中绘制像素-Java

从内到外在正方形中绘制像素-Java,java,pixel,pixels,Java,Pixel,Pixels,我想画一个像素的平方,取决于数组中有多少个项目。正方形表示数组数量,因此小正方形表示小数组,大正方形表示大数组。我发现很难概念化我是怎么做的 编辑:我正在使用Java2D 螺旋线从1开始,然后逆时针向正方形外侧移动(即2、3、4、5等)。每个方块都可以用方块表示的数据量来表示。公共类测试{ public class Test { enum Direction { Right, Up, Left, Down }

我想画一个像素的平方,取决于数组中有多少个项目。正方形表示数组数量,因此小正方形表示小数组,大正方形表示大数组。我发现很难概念化我是怎么做的

编辑:我正在使用Java2D

螺旋线从1开始,然后逆时针向正方形外侧移动(即2、3、4、5等)。每个方块都可以用方块表示的数据量来表示。

公共类测试{
public class Test {

    enum Direction {
        Right,
        Up,
        Left,
        Down
    }

    public static void main(String... args) throws IOException {

        BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);

        int rgb = Color.BLACK.getRGB();

        Point p = new Point(50, 50);
        Direction d = Direction.Right;
        int currentSegmentLength = 1;


        for (int i = 0; i < 100; i += 2) {

            paintSegment(image, rgb, p, d, currentSegmentLength);
            d = nextSegmentDirection(d);

            paintSegment(image, rgb, p, d, currentSegmentLength);
            d = nextSegmentDirection(d);

            currentSegmentLength++;
        }


        ImageIO.write(image, "png", new File("test.png"));
    }

    private static void paintSegment(BufferedImage image, int rgb, Point p,
            Direction d, int currentSegmentLength) {

        for (int s = 0; s < currentSegmentLength; s++) {
            image.setRGB(p.x, p.y, rgb);

            switch (d) {
            case Right: p.x++; break;
            case Up:    p.y--; break;
            case Left:  p.x--; break;
            case Down:  p.y++; break;
            }
        }
    }

    private static Direction nextSegmentDirection(Direction d) {
        switch (d) {
        case Right: return Direction.Up;
        case Up:    return Direction.Left;
        case Left:  return Direction.Down;
        case Down:  return Direction.Right;

        default: throw new RuntimeException("never here");
        }
    }
}
枚举方向{ 正确的, 向上的 左边 向下 } 公共静态void main(字符串…参数)引发IOException{ BuffereImage=新的BuffereImage(100100,BuffereImage.TYPE_INT_ARGB); int rgb=Color.BLACK.getRGB(); 点p=新点(50,50); 方向d=方向。右; int currentSegmentLength=1; 对于(int i=0;i<100;i+=2){ paintSegment(图像、rgb、p、d、currentSegmentLength); d=下一个分段方向(d); paintSegment(图像、rgb、p、d、currentSegmentLength); d=下一个分段方向(d); currentSegmentLength++; } write(图像,“png”,新文件(“test.png”); } 专用静态虚空绘制段(缓冲区图像、int rgb、点p、, 方向d,整数(长度){ 对于(int s=0;s
公共类测试{
枚举方向{
正确的,
向上的
左边
向下
}
公共静态void main(字符串…参数)引发IOException{
BuffereImage=新的BuffereImage(100100,BuffereImage.TYPE_INT_ARGB);
int rgb=Color.BLACK.getRGB();
点p=新点(50,50);
方向d=方向。右;
int currentSegmentLength=1;
对于(int i=0;i<100;i+=2){
paintSegment(图像、rgb、p、d、currentSegmentLength);
d=下一个分段方向(d);
paintSegment(图像、rgb、p、d、currentSegmentLength);
d=下一个分段方向(d);
currentSegmentLength++;
}
write(图像,“png”,新文件(“test.png”);
}
专用静态虚空绘制段(缓冲区图像、int rgb、点p、,
方向d,整数(长度){
对于(int s=0;s
您使用的是什么图形库/工具箱/系统?同意上述内容。。。你的问题遗漏了很多细节。如前所述,这是不可能解决的。对不起,伙计们,正方形就像一个螺旋,从内部向外放射,就像一个螺旋。这会让事情变得更清楚吗?也许是草图,或者是带有类似图形的视频?顺时针方向?那我的表好像走错方向了!您使用的图形库/工具箱/系统是什么?同意上述内容。。。你的问题遗漏了很多细节。如前所述,这是不可能解决的。对不起,伙计们,正方形就像一个螺旋,从内部向外放射,就像一个螺旋。这会让事情变得更清楚吗?也许是草图,或者是带有类似图形的视频?顺时针方向?那我的表好像走错方向了!