假设我有一个六边形:
如果我调整它的大小以在包含六边形网格的应用程序中使用它:
// ...
bgPaint = new Paint();
bgPaint.setAntiAlias(true);
bgPaint.setDither(true);
// ...
Bitmap coloredBackground = BitmapFactory.decodeResource(getResources(), R.drawable.bg);
// ...
canvas.drawBitmap(coloredBackground, null, getAsRect(), bgPaint);
我明白了:
getAsRect()
返回一个Rect
我用于绘图的对象。我想要实现的是摆脱边缘的那些透明像素。我认为我做错了什么,但到目前为止我找不到哪里。你知道我该如何解决这个问题吗?
我尝试尝试抖动和抗锯齿,但没有任何改变。
3条建议:
1
试试这个:通过设置解码资源时关闭系统的缩放BitmapFactory.Options.inScaled http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inScaled为假:
Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap source = BitmapFactory.decodeResource(context.getResources(), R.drawable.bg, options);
The inScaled
如果您需要位图的非缩放版本,则应关闭该标志。
然后缩放你的位图Bitmap.createScaledBitmap(...)
.
2
另一个可能的原因是您的图块的黑色对角线包含不同的灰色阴影:
这是您的图块的特写:
在调整大小之前已对其进行了抗锯齿处理。任何不全黑的像素可能会在调整大小的线条中显示为较浅的颜色。您可以将线条更改为全黑(0xFF000000),并仅在调整大小后才进行抗锯齿。
3
此问题的另一个解决方案是像这样设计您的图块:
这避免了绘制两条相邻的抗锯齿对角线的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)