我尝试在我的Android应用程序中集成九种补丁功能,以使拉伸效果更好。似乎9补丁文件是具有1像素边框的基本png文件。但是,当尝试自己构建9个补丁文件时,android和eclipse都不会将文件重新绘制为可绘制文件。您可以在文章末尾看到我使用ImageMagick进行DIY九补丁的脚本。
如果我按原样使用DIY ninepatch,则无法使用。如果我使用draw9patch打开它,然后保存并退出,它将起作用! DIY制作9个贴片是否有特定要求?
我希望你能帮帮我 !
非常感谢。
# 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
相同的九个补丁,使用draw9patch打开并保存
http://dl.dropbox.com/u/16984035/ninepatch-draw9patch.9.png
(对不起,我还不能发布图片!)
最佳答案
您链接的前九个补丁无效。一个像素边界中的每个像素都必须完全透明或完全黑色。当我放大底部边框时,在左侧的透明像素和右侧的黑色像素之间有一个灰色像素。那是无效的。
当您使用ImageMagick生成边框时,边框中黑色的位置最终可能像25.5一样是半像素,因此ImageMagick将像素着色为灰色。但是,它必须是透明的或全黑的。
关于android - DIY无法识别 9-patch ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9930241/