如何将位图图像(图钉)放置在 canvas 圆圈(蓝色圆圈)的中心?
how to place a bitmap image(pin) in center of the canvas circle(blue circle)?
int x = 1460;
int y = 800;
BitmapFactory.Options myOptions = new BitmapFactory.Options();
myOptions.inDither = true;
myOptions.inScaled = false;
myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;// important
myOptions.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.mipmap.map, myOptions);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.BLUE);
Bitmap workingBitmap = Bitmap.createBitmap(bitmap);
Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap);
canvas.drawCircle(x, y, 25, paint);
Bitmap currentPin = BitmapFactory.decodeResource(getResources(),
R.mipmap.pushpin_blue);
canvas.drawBitmap(currentPin, x, y, null);
我把大头针和圆放在同一个 xy 坐标中,但它显示如下图所示
为了解释问题考虑你有:
1: 128 * 128 像素圆
2: 128 * 128 像素贴图
然后,如果两者都位于 x=0
和 y=0
中,则输出将为
:
为了将 mipmap 的底部放在蓝色圆圈的中心,您应该在 x=0; y=0;
中定位 mipmap,在 x=0; y=64;
中定位圆圈,输出将是:
你的 mipmap 没有放在圆上的原因是 mipmap 尺寸比圆大。所以如果:
1:圆是32 * 32像素
2:mipmap为128 * 128像素
然后,如果两者都位于 x=0
和 y=0
中,则输出将是:
int x = 1460;
int y = 800;
BitmapFactory.Options myOptions = new BitmapFactory.Options();
myOptions.inDither = true;
myOptions.inScaled = false;
myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;// important
myOptions.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.mipmap.map, myOptions);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.BLUE);
Bitmap workingBitmap = Bitmap.createBitmap(bitmap);
Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap);
canvas.drawCircle(x, y, 25, paint);
Bitmap currentPin = BitmapFactory.decodeResource(getResources(),
R.mipmap.pushpin_blue);
canvas.drawBitmap(currentPin, x, y, null);
我把大头针和圆放在同一个 xy 坐标中,但它显示如下图所示
为了解释问题考虑你有:
1: 128 * 128 像素圆
2: 128 * 128 像素贴图
然后,如果两者都位于 x=0
和 y=0
中,则输出将为
:
为了将 mipmap 的底部放在蓝色圆圈的中心,您应该在 x=0; y=0;
中定位 mipmap,在 x=0; y=64;
中定位圆圈,输出将是:
你的 mipmap 没有放在圆上的原因是 mipmap 尺寸比圆大。所以如果:
1:圆是32 * 32像素
2:mipmap为128 * 128像素
然后,如果两者都位于 x=0
和 y=0
中,则输出将是: