Android 如何将位图图像(pin)放置在画布圆圈(蓝色圆圈)的中心?
我把针和圆放在相同的xy坐标中,但它显示如下图所示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中,则输出将为:
解释这个问题你认为有:
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);