Java点九图片解析 NinePatch

Apache
Java
跨平台
2016-07-11
freeseawind

关于JavaSE NinePatch

JavaSE NinePatch是一款针对Swing和JavaFX对点九图片解析的一种实现方式

关于点九

点九图又称九图,是一种png格式的图片,其后缀为.9.png,其与传统png图片不同的地方是,点九图的四周边缘各有1个像素宽高的区域,而且只能填两种颜色,透明(#00000000)和黑色(#FF000000),其目的是用于对该图片的扩展区域和内容显示区域进行定义。

使用点九PNG技术,可以将图片横向和纵向同时进行拉伸,并能保持图片细节,不会因为图片拉伸而模糊失真。

原理

如下图所示,这是一张点九图,左侧和上侧作为扩展区域,右侧和下侧则是控制内容显示的区域。当需要上下拉伸的时候,就从左侧和上侧的黑色区域非重合垂直部分开始复制拉伸;当需要左右拉伸的时候,就从上侧和左侧的黑色区域非重合水平部分开始拉伸。当想要在显示文字时,控制其与上下或左右边缘的距离,可以设置右侧或下侧的黑色区域,右侧的黑色区域控制内容上下位置,下侧控制内容的左右位置。

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);

运行效果


加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Android开发中的NinePatch圖檔

传统UI开发中,如果背景的大小不一样,一般需要为每种大小都 制作一张图片,这在button中尤为明显。当然我们也可以一小块一小块水平重复的画,也可 以垂直的话。在android中专门有一种叫nin...

2010/11/26 21:32
1K
1
点九图文件(PNG)解析

前情提要 在很久之前点九图还有两条黑边,那时候写了一个解析的demo: iOS_NinePatch 后来黑边没有了,问安卓的同事,说是“编译”过了。具体是怎么“编译”的,他们也不知道,于是事情就这样...

2018/11/26 11:55
27
0
安卓的nine-patch图片

做了好多客户端软件了,突然发现里面有好多图片都是重复的,个别只是大小不一样,每次都使用大量图片,导致软件过大,项目总结的时候才发现Android已经提供了一种解决方案了,这就是NinePat...

2015/06/04 09:58
20
0
Android padding

Android控件,如果设置了padding,然后又设置background drawable为ninepatch格式的图片时,padding会失效,解决办法是在设置了background之后再设置padding...

2012/03/19 13:14
642
0
反编译打包出现错误

No marked region found along edge.Found along top edge.错误 如果在Android项目中使用Nine Patch资源,时候可能出现比如ERROR: 9-patch image android123.9.png malformed.或 No marked ...

2014/02/24 15:47
435
0
【Android】9.png小节

NinePatch Image,draw9patch

2014/06/18 01:17
327
0
Android 启动APP时黑屏白屏的三个解决方案

你会很奇怪,为什么有些app启动时,会出现一会儿的黑屏或者白屏才进入Activity的界面显示,但是有些app却不会如QQ手机端,的确这里要做处理一下。这里先了解一下为什么会出现这样的现象,其实...

2015/11/03 10:02
17
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部