Java Graphics2D fillRect создает квадраты неправильного размера с узоромJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java Graphics2D fillRect создает квадраты неправильного размера с узором

Сообщение Anonymous »

У меня возникла проблема с пользовательским изображением, отображаемым на JPanel с помощью Graphics2D. Если я попытаюсь нарисовать пиксель 1x1 для каждой ширины и длины панели x/y с помощью fillRect, это создаст в шаблоне кучу прямоугольников разного размера: 1x1, 1x2 и 2x2. Я пробовал играть с подсказками рендеринга Graphics2D, но не смог понять, что вызывает это.
Вот увеличенное изображение того, что происходит, размер прямоугольника, кажется, создает также шаблон.
Изображение

Вот минимально жизнеспособный пример, который должен печатать прямоугольники 1x1.

Код: Выделить всё

import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;

class Scratch {

public static final int WIDTH = 400;
public static final int HEIGHT = 400;

public static void main(String[] args) {
BufferedImage img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_4BYTE_ABGR);
Graphics2D g2d = img.createGraphics();

JPanel panel = new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D panel2d = (Graphics2D) g;

// Black bg
g2d.setColor(Color.BLACK);
g2d.fillRect(0, 0, getWidth(), getHeight());

int c = 0;
for (int x = 0; x < getWidth(); x++) {
for (int y = 0; y < getHeight(); y++) {
g2d.setColor(new Color((c += 13) % 255, (c += 17) % 255, (c += 23) % 255));
g2d.fillRect(x, y, 1, 1);
}
}

panel2d.drawImage(img, null, 0, 0);
}
};

JFrame frame = new JFrame("Scratch");
frame.setLayout(new BorderLayout());
frame.add(panel, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);

frame.getContentPane().setPreferredSize(new Dimension(WIDTH, HEIGHT));
frame.pack();
}

}
Или мне следует использовать для этого что-то другое, кроме Graphics2D?


Подробнее здесь: https://stackoverflow.com/questions/788 ... -a-pattern
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»