NinePatchJava點(diǎn)九圖片解析
關(guān)于JavaSE NinePatch
JavaSE NinePatch是一款針對Swing和JavaFX對點(diǎn)九圖片解析的一種實(shí)現(xiàn)方式
關(guān)于點(diǎn)九
點(diǎn)九圖又稱九圖,是一種png格式的圖片,其后綴為.9.png,其與傳統(tǒng)png圖片不同的地方是,點(diǎn)九圖的四周邊緣各有1個(gè)像素寬高的區(qū)域,而且只能填兩種顏色,透明(#00000000)和黑色(#FF000000),其目的是用于對該圖片的擴(kuò)展區(qū)域和內(nèi)容顯示區(qū)域進(jìn)行定義。
使用點(diǎn)九PNG技術(shù),可以將圖片橫向和縱向同時(shí)進(jìn)行拉伸,并能保持圖片細(xì)節(jié),不會因?yàn)閳D片拉伸而模糊失真。
原理
如下圖所示,這是一張點(diǎn)九圖,左側(cè)和上側(cè)作為擴(kuò)展區(qū)域,右側(cè)和下側(cè)則是控制內(nèi)容顯示的區(qū)域。當(dāng)需要上下拉伸的時(shí)候,就從左側(cè)和上側(cè)的黑色區(qū)域非重合垂直部分開始復(fù)制拉伸;當(dāng)需要左右拉伸的時(shí)候,就從上側(cè)和左側(cè)的黑色區(qū)域非重合水平部分開始拉伸。當(dāng)想要在顯示文字時(shí),控制其與上下或左右邊緣的距離,可以設(shè)置右側(cè)或下側(cè)的黑色區(qū)域,右側(cè)的黑色區(qū)域控制內(nèi)容上下位置,下側(cè)控制內(nèi)容的左右位置。
JavaFX使用示例
Canvas canvas = new Canvas(480, 360);
GraphicsContext gc = canvas.getGraphicsContext2D();
Image img = new Image(getClass().getResource("/icon_qipao.9.png").toExternalForm());
FxNinePatch np = new FxNinePatch(img);
np.drawNinePatch(gc, 28, 28, 400, 100);
運(yùn)行效果
評論
圖片
表情
