web-dev-qa-db-ja.com

ピクセルに色を付けるには?

目的のために線や円などを描くためのさまざまなプリミティブを使用せずに、単純な2Dアニメーションを作成する必要があります。ピクセルを操作し、ピクセルに色を付けて線、円などを描画するためのアルゴリズムの1つを実装することによって実行する必要があります。

Turbo Cを使用することを考えましたが、ubuntuを使用しています。だから私はdosboxを使ってturbo Cをインストールして実行しようとしましたが、役に立ちませんでした。

現在、私の唯一の選択肢はJavaです。 Javaでピクセルを操作することは可能ですか?私は同じための良いチュートリアルを見つけることができませんでした。同じためのサンプルコードを与えることができれば素晴らしいでしょう。

13
razor35

クラス _Java.awt.BufferedImage_ には、個々のピクセルの色を設定するメソッドsetRGB(int x, int y, int rgb)があります。さらに、 _Java.awt.Color_ 、特にgetRGB()メソッドを確認することもできます。これにより、色を整数に変換して、_int rgb_パラメータに入力できます。/setRGB

30
user382157
import Java.awt.Color;
import Java.awt.Dimension;
import Java.awt.Graphics;
import Java.awt.Graphics2D;
import Java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class DirectDrawDemo extends JPanel {

    private BufferedImage canvas;

    public DirectDrawDemo(int width, int height) {
        canvas = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        fillCanvas(Color.BLUE);
        drawRect(Color.RED, 0, 0, width/2, height/2);
    }

    public Dimension getPreferredSize() {
        return new Dimension(canvas.getWidth(), canvas.getHeight());
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.drawImage(canvas, null, null);
    }


    public void fillCanvas(Color c) {
        int color = c.getRGB();
        for (int x = 0; x < canvas.getWidth(); x++) {
            for (int y = 0; y < canvas.getHeight(); y++) {
                canvas.setRGB(x, y, color);
            }
        }
        repaint();
    }


    public void drawLine(Color c, int x1, int y1, int x2, int y2) {
        // Implement line drawing
        repaint();
    }

    public void drawRect(Color c, int x1, int y1, int width, int height) {
        int color = c.getRGB();
        // Implement rectangle drawing
        for (int x = x1; x < x1 + width; x++) {
            for (int y = y1; y < y1 + height; y++) {
                canvas.setRGB(x, y, color);
            }
        }
        repaint();
    }

    public void drawOval(Color c, int x1, int y1, int width, int height) {
        // Implement oval drawing
        repaint();
    }



    public static void main(String[] args) {
        int width = 640;
        int height = 480;
        JFrame frame = new JFrame("Direct draw demo");

        DirectDrawDemo panel = new DirectDrawDemo(width, height);

        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }


}

代替テキストhttp://grab.by/grabs/39416148962d1da3de12bc0d95745341.png

23
I82Much

#Jave Cavas、Color、Graphics、#Swing JFrameを使用して単純なカラーリングピクセルクラスを作成した今日のもう1つの楽しみは、JFrame 400x400ピクセルの正方形を作成することです(フレームに追加のピクセルはほとんど必要ありません) self)そしてCanvasを拡張し、対称的にピクセルに色を付けます。

package gcclinux.co.uk;

import Java.awt.Canvas;
import Java.awt.Color;
import Java.awt.Graphics;

import javax.swing.JFrame;

public class ColouringPixels extends Canvas {

    private static final long serialVersionUID = 1L;
    private static final int WIDTH = 407; // Additional pixels needed for the frame
    private static final int HEIGHT = 427; // Additional pixels needed for the frame


    @Override
    public void Paint(Graphics g) {
        super.Paint(g);

        for (int r = 0; r <= 2; r++) {

        for(int y = 0; y < HEIGHT; y++) { 
            for(int x = 0; x < WIDTH; x++) { 
                if (x >= 1 && x <= 100 && y >= 1 && y <=100){
                    g.setColor(Color.WHITE);
                } else if (x >= 101 && x <= 200 && y >= 101 && y <=200){
                    g.setColor(Color.RED);
                } else if (x >= 201 && x <= 300 && y >= 201 && y <=300){
                    g.setColor(Color.WHITE);
                } else if (x >= 301 && x <= 399 && y >= 301 && y <=400){
                    g.setColor(Color.RED);
                } else              
                {
                    g.setColor(Color.BLUE);
                }
                g.drawLine(x, y, x, y);
            }
        }
            for(int x = 0; x < HEIGHT; x++) {
                for(int y = 0; y < WIDTH; y++) {
                    if (x >= 1 && x <= 100 && y >= 1 && y <=100){
                        g.setColor(Color.RED);
                    } else if (x >= 101 && x <= 200 && y >= 101 && y <=200){
                        g.setColor(Color.WHITE);
                    } else if (x >= 201 && x <= 300 && y >= 201 && y <=300){
                        g.setColor(Color.RED);
                    } else if (x >= 301 && x <= 399 && y >= 301 && y <=400){
                        g.setColor(Color.WHITE);
                    } else              
                    {
                        g.setColor(Color.BLUE);
                    }
                    g.drawLine(x, y, x, y);
                }
            }
        }
        try {
            Thread.sleep(2000);             // Sleep for 2 seconds
            System.exit(0);             // Closed the program
        }catch(InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("ColouringPixels - Lesson 9");
        frame.setSize(WIDTH, HEIGHT);
        frame.setResizable(false);
        frame.add(new ColouringPixels());
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}
2
user3025039

これは、Javaの組み込み 2Dグラフィックス パッケージを使用して実現できます。

0
camickr