我尝试在我的Android应用程序中集成九个补丁功能,以使弹力看起来更好。似乎九个补丁文件是具有1个像素边框的基本png文件。但是,当我尝试自己构建九个补丁文件时,android和eclipse都不会将文件重新整理为drawable。您可以在帖子的末尾看到我用于使用ImageMagick进行DIY九补丁的脚本。
如果我按原样使用DIY九点,它不起作用。如果我使用draw9patch打开它并保存并退出,它就可以了!是否需要制作DIY九补丁?
我希望你能帮助我!
非常感谢。
# make a rounded square background with 1 px border
convert -size 100x100 xc:lightblue ninepatch.9.png
convert ninepatch.9.png -format 'roundrectangle 1,1 %[fx:w],%[fx:h] 15,15' info: > tmp.mvg
convert ninepatch.9.png -border 1 -alpha transparent -background none -fill white -stroke none -strokewidth 0 -draw "@tmp.mvg" tmp.png
convert ninepatch.9.png -matte -bordercolor none -border 1 tmp.png -compose DstIn -composite ninepatch.9.png
# draw ninepatch info
convert ninepatch.9.png -format 'stroke-dasharray 1 1 line %[fx:w*0.25],0 %[fx:w*0.75],0' info: > tmp.mvg
convert ninepatch.9.png -format 'line 0,%[fx:h*0.25] 0,%[fx:h*0.75]' info: >> tmp.mvg
convert ninepatch.9.png -format 'fill black line %[fx:w*0.25],%[fx:h-1] %[fx:w*0.75],%[fx:h-1]' info: >> tmp.mvg
convert ninepatch.9.png -format 'line %[fx:w-1],%[fx:h*0.25] %[fx:w-1],%[fx:h*0.75]' info: >> tmp.mvg
convert ninepatch.9.png -fill none -stroke black -strokewidth 0.5 -draw "@tmp.mvg" ninepatch.9.png
请注意这两个文件之间的大小差异:
http://dl.dropbox.com/u/16984035/ninepatch.9.png
http://dl.dropbox.com/u/16984035/ninepatch-draw9patch.9.png
(抱歉,我无法发布图片!)
答案 0 :(得分:1)
您关联的前九个补丁无效。一个像素边界中的每个像素需要完全透明或完全黑色。当我放大底部边框时,左边透明的像素和右边的黑色像素之间有一个灰色像素。这是无效的。
使用ImageMagick生成边框时,边框中黑色的位置可能最终为25.5的半像素,因此ImageMagick将像素灰色着色。但是,它必须是透明的或全黑的。