小编Mat*_*ias的帖子

Java AWT自定义CompositeContext和消除锯齿:在客户区外部绘制时出现RasterFormatException

我正在尝试为AWT Graphics2D实现类似SWT GC的xor-mode绘图.使用内置的XORComposite不是一个选项,因为它不像SWT那样实现xor-mode绘图.

SWT xor-mode绘图通过二进制异或结合源和目标颜色.AWT XORComposite(可用于g2d.setXORMode(Color))使用常量xor颜色,通过二进制异或与源颜色组合,或者目标颜色不影响结果颜色.

因此,我唯一想到的选择是编写自己的CompositeCompositeContext实现,它们适当地组合了源和目标.

一些阅读后,我想出了这个简单的实现:(是的,我知道与getPixel(...),setPixel(...)开销,我希望它优化之前正常工作的.)

private static class XorComposite implements Composite {

    public static XorComposite INSTANCE = new XorComposite();

    private XorContext context = new XorContext();

    @Override
    public CompositeContext createContext(ColorModel srcColorModel,
            ColorModel dstColorModel, RenderingHints hints) {
        return context;
    }

}

private static class XorContext implements CompositeContext {

    public XorContext() {
    }

    @Override
    public void compose(Raster src, Raster dstIn, WritableRaster dstOut) {
        int w = Math.min(src.getWidth(), dstIn.getWidth());
        int …
Run Code Online (Sandbox Code Playgroud)

java awt composite xor antialiasing

15
推荐指数
1
解决办法
1131
查看次数

标签 统计

antialiasing ×1

awt ×1

composite ×1

java ×1

xor ×1