Android 如何将位图图像(pin)放置在画布圆圈(蓝色圆圈)的中心?

Android 如何将位图图像(pin)放置在画布圆圈(蓝色圆圈)的中心?,android,canvas,android-canvas,android-bitmap,Android,Canvas,Android Canvas,Android Bitmap,我把针和圆放在相同的xy坐标中,但它显示如下图所示 解释这个问题你认为有: 1:128*128像素圆 2:128*128像素mipmap 然后,如果两者都位于x=0和y=0中,则输出将为 : 为了将mipmap的底部放在蓝色圆圈的中心,您应该在x=0中定位mipmap;y=0并在x=0中圈出;y=64输出将为: mipmap未放置在圆上的原因是mipmap的大小大于圆。所以如果: 1:圆圈为32*32像素 2:mipmap为128*128像素 然后,如果两者都位于x=0和y=0中,则输出将为:

我把针和圆放在相同的xy坐标中,但它显示如下图所示


解释这个问题你认为有:
1:128*128像素圆
2:128*128像素mipmap
然后,如果两者都位于
x=0
y=0
中,则输出将为

:

为了将mipmap的底部放在蓝色圆圈的中心,您应该在
x=0中定位mipmap;y=0并在
x=0中圈出;y=64输出将为:

mipmap未放置在圆上的原因是mipmap的大小大于圆。所以如果:
1:圆圈为32*32像素
2:mipmap为128*128像素
然后,如果两者都位于
x=0
y=0
中,则输出将为:


你应该考虑你使用的位图的大小。可能Pin位图的大小大于蓝色圆圈。它们都从相同的位置开始,但引脚位于较大位图的中心,因此引脚的底部不位于蓝色圆圈的中心。即使两个位图的大小相同。您应该将Pin定位在
PinX=x
PinY=y-(圆形灯/2)@MohamadArmoon我没有得到这个答案添加了'float density=getResources().getDisplayMetrics().densityDpi;浮点数w=(密度/420f)*currentPin.getWidth();浮点数h=(密度/420f)*currentPin.getHeight();currentPin=Bitmap.createScaledBitmap(currentPin,(int)w,(int)h,true);drawCircle(Float.parseFloat(x)、Float.parseFloat(y)、Float.parseFloat(rad)、mpain);canvas.drawBitmap(currentPin,Float.parseFloat(x)-w/2,Float.parseFloat(y)-h/2,null);'它现在在MohamadArmoon工作
   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);