This question has been asked before, ancak cevaplar sorunu çözmüyor, bu yüzden tekrar soruyorum.Swing'de subpixel hassasiyetli çizgiler çizmenin bir yolu var mı?
yerine g2.drawLine
kullanmak yerine, line
bir Line2D.Double
olduğunu g2.draw(line)
, kullanabileceği öne sürüldü. Ancak, ekran görüntüsünden de görebileceğiniz gibi, çizgiler bir tamsayı pikseliyle bittikleri gibi çekilir (her 10 satırlık dizi tam olarak paraleldir).
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Line2D;
public class FrameTestBase extends JFrame {
public static void main(String args[]) {
FrameTestBase t = new FrameTestBase();
t.add(new JComponent() {
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
for (int i = 0; i < 50; i++) {
double delta = i/10.0;
double y = 5 + 5*i;
Shape l = new Line2D.Double(5, y, 200, y + delta);
g2.draw(l);
// Base case, with ints, looks exactly the same:
// g2.drawLine(5, (int)y, 200, (int)(y + delta));
}
}
});
t.setDefaultCloseOperation(EXIT_ON_CLOSE);
t.setSize(220, 300);
t.setVisible(true);
}
}
yüzden doğru bir pikselin üzerinde tam olarak sona ermez satırları işlemek için Swing imkansızdır?
Eğer g2d.setRenderingHint deneyebilir miyim (RenderingHints .KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); ? http://stackoverflow.com/questions/5018635/java-does-subpixel-line-accuracy-require-an-affinetransform – I82Much
Kenar piksellerini farklı bir renkte (subpixel)/graytone (subpixel olmayan antialiasing) çizmelisiniz. – ninjalj
@ I82Much Bu işe yarıyor! Bunu bir cevap olarak eklemelisiniz! –