现在要实现图形缩放的功能,我使用ImageData.scaledTo的方法实现的,不过锯齿太严重了,加了graphics.setAntialias(SWT.ON);也没什么效果?那问有好的缩放算法,可以比较好的减少锯齿感,尤其是在放大倍数很大的时候,能不能指点一下我,多谢了。

解决方案 »

  1.   

    不要用ImageData.scaledTo
    用GC的drawImage方法,而且也不用设Antialias,只要调用setAdvanced(true)就不会有锯齿了,就像下面:
    ImageLoader loader = new ImageLoader();
    loader.load("1.jpg");
    Image src = new Image(null, loader.data[0]);
    int width = src.getImageData().width;
    int height = src.getImageData().height;
    int ratio = 10;
    Image result = new Image(null, width * ratio, height * ratio); GC gc = new GC(result);
    gc.setAdvanced(true);
    gc.drawImage(src, 0, 0, width, height, 0, 0, width * ratio, height * ratio);
    loader.data[0] = result.getImageData(); loader.save("2.jpg", SWT.IMAGE_JPEG);