gpt4 book ai didi

Android 自定义 map 标记、 Canvas 绘图和图像大小调整

转载 作者:太空宇宙 更新时间:2023-11-03 11:12:32 25 4
gpt4 key购买 nike

我正在尝试创建一个如下图所示的自定义标记,如果可能的话,可以使用轮廓或阴影。里面的矩形代表一个动态图像。

enter image description here

无论如何,我掌握了基础知识,但我不知道如何更改图像的大小,因为我只能定义左上角的偏移点,然后 Canvas 的其余部分会被图像填充到右下角,遮住背景。我也不知道如何创建朝下的三角形,我尝试旋转 Canvas ,绘制一个矩形并将其旋转回来(参见第二个代码 fragment ),但这不起作用,因为它不围绕其中心旋转。有任何想法吗?我也在“正确”地做这件事吗?这是构建自定义标记的正确方法还是太慢/不是最佳方法?

    //IMAGE MARKER - red background with image on top
LatLng vogel3 = new LatLng(myLat+0.0005,myLong+0.0005);
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmp = Bitmap.createBitmap(40, 40, conf);
Canvas canvas = new Canvas(bmp);

Paint color = new Paint();
color.setColor(Color.RED);

canvas.drawRect(0, 0, 40, 40, color);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),
R.drawable.spatz_adult), 3, 5, color);

//canvas1.drawText("bird", 30, 40, color);

//add marker to Map
map.addMarker(new MarkerOptions().position(vogel3)
.icon(BitmapDescriptorFactory.fromBitmap(bmp))
.title("custom marker")
.snippet("eeeeeeeeeep")
//.anchor(0.5f, 1)
);

~

//trying to draw triangle
canvas.save();
canvas.rotate(45);
canvas.drawRect(0, 0, 40, 40, color);
canvas.restore();

最佳答案

尝试按照示例代码调整图像大小,它对我有用。

// RESIZE IMAGE
public Bitmap resizeBitmap(String imagePath,int targetW, int targetH) {
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(imagePath, bmOptions);
int photoW = bmOptions.outWidth;
int photoH = bmOptions.outHeight;

int scaleFactor = 1;
if ((targetW > 0) || (targetH > 0)) {
scaleFactor = Math.min(photoW/targetW, photoH/targetH);
}

bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;

return BitmapFactory.decodeFile(imagePath, bmOptions);
}

关于Android 自定义 map 标记、 Canvas 绘图和图像大小调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22519809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com