缩放画布上的位图

缩放画布上的位图,第1张

概述我创建了一个带有两个位图的自定义视图.当我在View之外使用Bitmap时,在ImageView中,图像正常.我必须调用setDensity(240)(hdpi设备),但是没关系.但是,在自定义视图中,当我在画布上绘制相同的位图时,在onDraw(Canvas)重写方法中,它将再次缩放,就像不调用setDensity(240)时一样.通过

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

码:

@OverrIDeprotected 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,位于我的视图之外.

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.

解决方法:

我解决了问题.导致问题的代码段在清单文件中.
我们更改了< supports-screens androID:anyDensity =“ false” />真实.默认值是True,但是不幸的是,在尝试其他方法时,我更改了它.使用新值和setDensity()方法,它可以正常工作.

总结

以上是内存溢出为你收集整理的缩放画布上的位图全部内容,希望文章能够帮你解决缩放画布上的位图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存