Как разместить растровое изображение (булавку) в центре круга холста (синий круг)? - PullRequest
0 голосов
/ 30 декабря 2018
   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, но он показывал, как показано на рисунке ниже

I need to place the image on center of the bluie circle

1 Ответ

0 голосов
/ 02 января 2019

Чтобы объяснить проблему, подумайте, что у вас есть:1: 128 * 128 пикселей2: 128 * 128 пикселей, MipMapТогда, если оба найдутся в x=0 и y=0, на выходе будет

: enter image description here

, чтобы поместить нижнюю часть mipmap в центрсиний кружок, вы должны найти mipmap в x=0; y=0; и кружок в x=0; y=64;, результат будет:

enter image description here

причина, по которой ваш mipmapпо кругу не помещается то, что размер mipmap больше, чем у круга.так что если:1: круг 32 * 32 пикселей2: mipmap 128 * 128 пикселейТогда, если оба найдут в x=0 и y=0, результат будет:

enter image description here

...