如何在保留边框厚度的同时缩放矩形图像?

我想创建一个可编程的可缩放图像,像这样: 形象一个 缩放到 图像两个

两者都有一个像素边框。 如果我在Paint.NET中从第一个缩放到第二个,将会有一个两个像素的水平边框,但我希望它保持单像素。

Solutions Collecting From Web of "如何在保留边框厚度的同时缩放矩形图像?"

您需要将图像分成9部分。 四角,四方和内在的内容。

在这里输入图像说明

在这个图像中,你可以看到每个不同的切片可以resize,以产生你想要的结果。 不要缩放角落,让它们保持原样。 然后,您需要沿x轴缩放顶部和底部,而不是y。 然后左右两边需要在y轴上缩放,而不是x。 那么显然你需要沿两个轴缩放内层。

这可以通过多种方式完成。 我最熟悉的OpenGL,所以我只是定义了9个不同的四边形顶点的纹理坐标。 你也可以在Photoshop中分割图像,并使用不同的部分作为不同的纹理(这是非常缓慢的,要注意)。

如果您的块真的像1像素轮廓的填充颜色一样简单,那么您可以根据需要从头开始生成每个图像。

这是一个使用ImageMagick的convert程序的bash脚本:

 #!/bin/bash declare -i width declare -i height width=$1 height=$2 convert \ -size "$width x $height" \ canvas:#ffd \ -fill none \ -stroke red \ -strokewidth 1 \ -draw "rectangle 0,0 `expr $width - 1`,`expr $height - 1`" \ block.png 

使用参数50 50运行脚本产生 在这里输入图像说明 ,而50 25在这里输入图像说明100 10 在这里输入图像说明

如果您想要在运行时映像,您当然可以使用任何其他graphics工具包。