Jeg har brug for at tegne linjer i subpixelprecision, og skulle mene, at
man burde kunne gøre dette ved at scalere lærredet, man får fra
Graphics2D, ned.
Programmet
import java.awt.*;
import javax.swing.*;
public class TestGfx2D extends JPanel {
public TestGfx2D() {
JFrame f = new JFrame();
f.setTitle("Actual output");
setPreferredSize(new Dimension(16,16));
f.add(this);
f.pack();
f.setVisible(true);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.scale(.25,.25);
for(int i=0; i<6; i++) {
g2.drawLine(0,9*i,40,10+9*i);
}
}
public static void main(String[] args) {
new TestGfx2D();
}
}
burde altså efter min mening give (med fastbreddeskrifttype):
|XXXX
| XXXX
|XXX XX
| XXXX
|XX XXX
| XXXX
|X XXXX
| XXXX
| XXXX
|XXXX X
| XXXX
|XXX XX
| XXXX
| XXX
- men det /giver/ på mit system (sun java 5, ubuntu):
|XXX
| XXXXX
|XXX XXX
| XXXXX
|XX XXX
| XXX
|XX XXXX
| XXX XX
| XXXX
|XXX XX
| XXXXX
|XXX XXX
| XXXXX
| XXX
Jeg har prøvet at sætte renderinghints, men kan ikke få
subpixelprecision uden samtidig at få antialias
Oplever andre det samme, og er der nogen, der kender et workaround?
(Jeg er altså ikke meget for at skulle til at kode mine egne subpixel-ting)