android - 如何只显示位图的一部分——

标签 android graphics bitmap scale

我正在尝试创建一个移动的背景。我的目标是让一个巨大的位图自行滚动,使其看起来好像在移动。但首先我需要弄清楚如何只显示位图的一部分。我试过这段代码,但没有成功。在这种情况下我要找的是子集吗? canvas.drawBitmap(位图, """subset"""src, dst, paint)

这是方法解释 bitmap 要绘制的位图 ====== src 可以为空。要绘制的位图的子集 ======= dst 位图将被缩放/转换以适应的矩形

最佳答案

Canvas.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint);

它允许我们指定要绘制的位图的一部分 通过第二个参数。 Rect 类包含左上角和右下角 矩形的坐标。当我们通过 src 指定 Bitmap 的一部分时,我们这样做 在位图的坐标系中。如果我们指定 null,将使用完整的位图。 第三个参数定义应该将 Bitmap 的部分绘制到哪里, 再次以 Rect 实例的形式。 不过,这一次角坐标是在 Canvas 目标的坐标系中给出的( View 或另一个位图)。 令人大吃一惊的是,这两个矩形不必大小相同。如果我们指定 目标矩形比源矩形小,然后是 Canvas 会自动为我们缩放。指定更大的目的地也是如此 长方形。

Rect dst = new Rect();
dst.set(50, 50, 350, 350);
canvas.drawBitmap(bmp, null, dst, null);

这里的bmp是原始大小为160*183像素的位图。使用 Rect 将其缩放为 250*250 像素。

关于android - 如何只显示位图的一部分——,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9720719/

相关文章:

Android 库 - 使用 Gradle 将多个变体发布到本地 Maven 存储库

c++ - OGLFT 在使用 GLStipple 时绘制文本

java - 将位图转换为 ASCII 艺术

iphone - 如何在iOS中进行位图比较?

android - 在 ListView 中单击的项目的索引

启动 Activity 的 Android 简单小部件

Android gcm 项目服务器 key 需要一次又一次重新生成

graphics - 几何着色器执行次数?

c++ - OpenGL 3.0 窗口碰撞检测

C++ WinAPI 位图内存泄漏?