gpt4 book ai didi

android - 在 Canvas 上绘制位图已缩放

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:37 24 4
gpt4 key购买 nike

我创建了一个带有两个位图的自定义 View 。当我在我的 View 之外使用位图时,在 ImageView 中,图像正常。我必须调用 setDensity(240)(hdpi 设备),但没关系。但是,在自定义 View 中,当我在 Canvas 上绘制相同的位图时,在 onDraw(Canvas) 重写方法中,它再次缩放,与我不调用 setDensity 时的方式相同(240)。通过调试,我确保调用后 Canvas 和位图的密度为 240。

代码:

@Override
protected void onDraw(Canvas canvas) {
_ingredient.setDensity(240);
canvas.setDensity(240);
canvas.drawBitmap(_ingredient, new Matrix(), new Paint());
Matrix refMatrix = new Matrix();
refMatrix.postTranslate(0, _ingredient.getHeight()-35);
Paint paint = new Paint();
paint.setAlpha(60);
}

工作的 ImageView,在我的 View 之外。

Bitmap tertr = _cocktail.getCocktailBitmapImage();
tertr.setDensity(240);
ImageView in = new ImageView(this);
in.setScaleType(ScaleType.CENTER);
in.setImageBitmap(tertr);
RelativeLayout relativeLayout = RelativeLayout)findViewById(R.id.cocktail_date_image_layout);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
relativeLayout.addView(in, params);

第一个显示放大的图像,就像第二个一样,没有调用 setDensity。图像以 72dpi 创建。这些图像是给定的,我无法更改它们。我是否遗漏了一件事,或者这就是 Canvas 的工作原理?测试使用的设备是DROID2。

最佳答案

我解决了这个问题。导致问题的代码 fragment 在 list 文件中。我们改了<supports-screens android:anyDensity="false"/>为真。 True 是默认值,但不幸的是,我在尝试不同的方法时更改了它。使用新值,以及 setDensity()方法,有效。

关于android - 在 Canvas 上绘制位图已缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5014882/

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