如何设置图像的分辨率?

时间:2015-04-23 15:19:00

标签: swing clojure seesaw

我正在使用Seesaw与Swing进行互动。

我定义了一些图标:

(def label :icon 
           (clojure.java.io/resource "some_image.png"))

我想渲染" some_image.png"在不同的分辨率。如果我只是设置边界,我只会得到图像的一部分。

我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

你可以通过下降到Swing来做到这一点。基本上,将文件操作为Swing图像。一旦你拥有了你想要的大小,Seesaw的icon设施在传递的内容方面是灵活的(见https://daveray.github.io/seesaw/seesaw.icon-api.html);您可以将Swing图像传递到label函数。

(defn imagetest []
  (let [w (frame :title "Image Test" :width 400 :height 400)
        img (.getScaledInstance 
              (javax.imageio.ImageIO/read 
                (io/resource "racecar.gif")) 400 400 1)
        lbl (label :icon img)
        pnl (horizontal-panel :items [lbl])]
    (config! w :content pnl)
    (show! w)))

注意:我作为1的最终arg传递的.getScaledInstanceSCALE_DEFAULT标志;更多信息:https://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.Image.SCALE_DEFAULT