1

我已经使用以下代码创建了一个包含任何图像的地图:

icon_pin = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.arrow);
int w = icon_pin.getWidth();
int h = icon_pin.getHeight();
Bitmap.Config conf = Bitmap.Config.ARGB_8888;

Bitmap bmp = Bitmap.createBitmap(w, h, conf); 


final float centerX = w / 2.0f;
final float centerY = h / 2.0f;

Canvas canvas = new Canvas(bmp);
canvas.rotate(m.getDirection(), centerX, centerY);

canvas.drawBitmap(icon_pin, new Matrix(), null);

但是当我旋转图像时,结果非常粗糙(如本例中的绿色箭头:http: //img837.imageshack.us/img837/4624/screenshot2013052111381.png

我做错了什么?有可能改善定义吗?

4

1 回答 1

1

看起来您需要在启用抗锯齿的情况下进行绘制。在这一行:

canvas.drawBitmap(icon_pin, new Matrix(), null);

您可以指定Paint用于绘图的对象。上面,您使用null. 您可以在调用之前添加这些行canvas.drawBitmap()

Paint myPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
myPaint.setFilterBitmap(true);

然后将最后一行更改为:

canvas.drawBitmap(icon_pin, new Matrix(), myPaint);

此代码创建一个Paint启用了抗锯齿的新对象,它有望消除标记上的锯齿状边缘。

注意:您还可以使用Paint将颜色、Alpha 阴影和其他炫酷效果应用到您的绘图中。请参阅此处的 Android 文档。

于 2013-05-22T13:59:10.607 回答