为啥我使用postScale缩放图片之后,再使用imageView.layout()这个方法移动图片就没有效果了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我使用postScale缩放图片之后,再使用imageView.layout()这个方法移动图片就没有效果了相关的知识,希望对你有一定的参考价值。

缩放图片:
Matrix mt = new Matrix();
mt.postTranslate(x, y);
mt.postScale(scale, scale);
Bitmap bm =Bitmap.createBitmap(bm, 0, 0, bmpW, bmpH, mt, true);
imageview.setImageBitmap(bm);
下面这句移动图片就没有效果了
imageview.layout(x,y,x+width,y+height);

亲,你没有设计缩放率

1. //定义预转换成的图片的宽度和高度
2. int newWidth = 200;
3. int newHeight = 200;
4.
5. //计算缩放率,新尺寸除原始尺寸
6. float scaleWidth = ((float) newWidth) / width;
7. float scaleHeight = ((float) newHeight) / height;
8.
9. // 创建操作图片用的matrix对象
10. Matrix matrix = new Matrix();
11.
12. // 缩放图片动作
13. matrix.postScale(scaleWidth, scaleHeight);
14.
15. //旋转图片 动作
16. matrix.postRotate(45);
17.
18. // 创建新的图片
19. Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
20. width, height, matrix, true);
21.
22. //将上面创建的Bitmap转换成Drawable对象,使得其可以使用在ImageView, ImageButton中
23. BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
24.
25. //创建一个ImageView
26. ImageView imageView = new ImageView(this);
27.
28. // 设置ImageView的图片为上面转换的图片
29. imageView.setImageDrawable(bmd);
30.
参考技术A imageview就是显示图片的,看下是不是应该在父层容器中移动整个imageview追问

父层是一个layout,难道要自己创建一个layout布局

为啥 Libgdx 的 Table 不接受缩放动作?

【中文标题】为啥 Libgdx 的 Table 不接受缩放动作?【英文标题】:Why Libgdx's Table does not accept scale action?为什么 Libgdx 的 Table 不接受缩放动作? 【发布时间】:2012-10-23 11:31:04 【问题描述】:

我正在使用 libgdx 库中的 scene2d 在我的游戏中创建一些 UI。

我使用了一个表格,我想在用户触摸时采取一些缩放操作以使按钮具有触摸感。

当我使用任何其他“Actor”类型(如 Group)并为其提供缩放动作时,它可以工作,但不能使用 Table。

这是我的表定义:

Table table = new Table();
table.setSize(width, height);
table.setPosition(x, y);
table.setOrigin(width/2, height/2);
table.add(new Label(...));
table.row();
...

在我的 touchDown 事件中,我给它一个缩放动作:

table.addAction(Actions.scaleTo(0.8f, 0.8f, 0.1f));

在 touchUp 中,我给它另一个动作以获得原始比例:

table.addAction(Actions.scaleTo(1f, 1f, 0.1f));

正如我所说,此代码适用于其他类型的 Actor,例如 Image 和 Group。 有什么想法为什么不适用于 Table?

【问题讨论】:

【参考方案1】:

回答我自己的问题:

为了 libGdx 的文档 (https://code.google.com/p/libgdx/wiki/scene2dui#Rotation_and_scale),如果设置了背景,表不支持缩放和旋转。

如果我们想要缩放和/或旋转表格,我们必须像下面的代码一样:

TextButton button = new TextButton("Text Button", skin);
Table wrapper = new Table();
wrapper.add(button);
wrapper.setTransform(true);
wrapper.setOrigin(wrapper.getPrefWidth() / 2, wrapper.getPrefHeight() / 2);
wrapper.setRotation(45);
wrapper.setScaleX(1.5f);

【讨论】:

在最新版本的库 (0.9.8) 中似乎缺少setTransform,但您可以改为调用setClip(true),它可以将转换作为副作用。 @Nick - setTransform 在 0.9.8 下仍然存在。是Grouplibgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/…的方法 为我工作,谢谢! 设置 setTransform(true) 为我固定了桌子上的刻度。医生撒谎!他们说默认情况下这是真的,但它不适合我:)

以上是关于为啥我使用postScale缩放图片之后,再使用imageView.layout()这个方法移动图片就没有效果了的主要内容,如果未能解决你的问题,请参考以下文章

为啥我把图片放在dreamweaver里加了热区之后再放进网站里图片就会变了不清晰呢?

java swing 怎么让图片大小随着窗口的缩放而缩放?为啥我插入的图片尺寸不变?

html中怎么把图片按比例缩放在<span>里面

android编程 在image中为啥给图片定了大小(PX),background的大小也被缩放啦!和图片的大小一样

我修改图片,为啥网页打开还是原来那个,图片是在top.php里

使用scale等比例缩放图片