DIY Nine-patch не переработан - PullRequest
1 голос
/ 29 марта 2012

Я пытаюсь интегрировать в свои приложения для Android девять патчей, чтобы сделать растягивание лучше.Кажется, что файлы с девятью патчами являются простыми файлами png с границей в 1 пиксель.Тем не менее, когда я пытаюсь создать файл из девяти патчей самостоятельно, и Android, и Eclipse не преобразовывают файлы как нарисованные.В конце поста вы можете увидеть сценарий, который я использую для DIY-патча с использованием ImageMagick.

Если я использую 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

  • тот же девяти патч, открытый и сохраненный с помощью draw9patch

http://dl.dropbox.com/u/16984035/ninepatch-draw9patch.9.png

(Извините, я пока не могу опубликовать изображение!)

1 Ответ

1 голос
/ 04 ноября 2012

Первые девять патчей, которые вы связали, недействительны. Каждый пиксель на границе одного пикселя должен быть либо полностью прозрачным, либо полностью черным. Когда я увеличиваю нижнюю границу, между прозрачными слева и черными справа появляется серый пиксель. Это недействительно.

Когда вы сгенерировали границу с помощью ImageMagick, возможно, положение черного на границе оказалось равным половине пикселя, например 25,5, поэтому ImageMagick покрасил пиксель в серый. Однако он должен быть прозрачным или полностью черным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...