在画布上绘制位图已缩放

2024-01-29

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

Code:

@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。


我解决了这个问题。导致问题的代码片段位于清单文件中。 我们改变了<supports-screens android:anyDensity="false"/>为真。 True 是默认值,但不幸的是,当我尝试不同的方法时,我改变了它。有了新的价值,setDensity()方法,有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在画布上绘制位图已缩放 的相关文章

随机推荐

  • 浮点大于或小于零

    我有以下代码 有时返回 true 有时不返回 知道什么可能导致不同的结果吗 0 00 字符串来自 JSON 对象 代码简化 if new Float 0 00 gt 0 do something EDIT 我有一些浮点数 我想确定它是零 小
  • 尝试访问使用 CIFS 装载的远程文件夹在断开连接时挂起

    这个问题是一个扩展那个问题 https stackoverflow com questions 17929294 qdir hangs on accessing cifs remote folder when disconnected 再说
  • 如何在每个场景之前输出Cucumber后台步骤?

    通常 Cucumber 将输出后台步骤 使其看起来与您在功能文件中定义的相同 位于顶部 bundle exec cucumber color format pretty Feature Something Background Given
  • C# 获取 Windows 中每个显示器的 DPI 缩放比例

    我正在使用 WPF 应用程序中的代码 该应用程序需要计算 Windows 中每个显示器的 DPI 缩放大小 我能够计算出主屏幕的 DPI 但由于某种原因 我无法计算出如何获取其他显示器的比例 其他显示器都返回与主显示器相同的 DPI 有一些
  • 添加重试WebClient的所有请求

    我们有一个服务器来检索 OAUTH 令牌 并且 oauth 令牌通过 WebClient filter 方法添加到每个请求中 例如 webClient mutate filter request next gt tokenProvider
  • 验证 WCF Rest Web 服务

    我在 C 中创建了一个 Web 服务 REST Web 服务 无需任何身份验证 现在 我正在考虑向网络服务添加身份验证 Web服务公开了6个方法 都是GET 在这6个方法中 我想限制 Admin 组成员对2个方法的访问 目前 我的 Web
  • SQLAlchemy外键找不到表

    当我尝试实例化时出现此错误ConsumerAdvice class Foreign key associated with column tbConsumerAdvice ConsumerAdviceCategory ID could no
  • 有没有办法将 EditText/输入字段放入主屏幕小部件中?

    我希望我的用户在主屏幕上输入一些内容 但是每次我向小部件添加 Edittext 时 它都会中断 我做了一些谷歌搜索发现它们显然在小部件中不受支持 不过 每部 Android 手机上都有一个带有输入字段的 Google 搜索小部件 所以我想知
  • React-navigation-hooks:如何测试 useFocusEffect

    据我了解 应该这样做 以便 useFocusEffect 可以作为 useEffect 进行测试 模拟 我使用 useFocusEffect 来获取数据 useFocusEffect useCallback gt fetchData fet
  • 如何从gitlab中完全删除提交?

    我在 git 存储库中进行了提交并推送了它 但意外地它包含了我们生产机器的一些密码 所以我删除了提交 git reset hard HEAD 1 git push force 这确实从提交列表中删除了该提交 但 gitlab 上提交的 ur
  • 具有不同类型中断的状态循环

    我正在尝试将以下有状态命令式代码转换为 Haskell while true while get if put1 failImmediately if put2 succeedImmediately 这俩put1 and put2读取系统的
  • Java 泛型类型转换难题

    我正在尝试使用 Google 的 Guava ImmutableSet 类来创建一组具有类似时间属性的不可变类 java util Date 和 org joda time DateTime private static final Imm
  • 如何从 GDAX websocket feed 获取实时出价/要价/价格

    API 文档不鼓励轮询 ticker端点 建议使用websocket流来监听匹配消息 但匹配响应只提供了一个price and a side 卖买 如何从 websocket feed 重新创建股票行情数据 价格 卖价和出价 price 3
  • ffmpeg:如何在视频末尾添加帧或黑色?

    如何复制任何视频末尾最后一帧的任意数量的重复项 或者 如何在任何视频的末尾添加黑帧 这可以通过脚本和 ffmpeg 来完成吗 当然 只要操作可编写脚本 任何其他工具都可以 困难在于应该支持所有视频格式 或者至少尽可能广泛的视频格式 该脚本应
  • 在没有代理设置的情况下在 VSTS 中运行 nuget 任务

    所以我认为我想要的是这篇文章的反面 VSTS NuGet 恢复失败 代理 https stackoverflow com questions 45369334 vsts nuget restore fails proxy 我们有一台本地计算
  • 在Windows中设置JAVA_HOME?

    应该在哪里JAVA HOME指向 JDK 还是 JRE 我在几个网站上看到过 它设置为 JRE 而在其他情况下则设置为 JDK 它是否以任何方式依赖于 Java 版本 JDK代表Java开发工具包 而JRE代表Java运行时环境 JAVA
  • MySQL GROUP BY 行为

    给出下表 foo ID First Name Last Name 67 John Smith 67 Bill Jacobs What first name and last name下面的查询会返回 为什么 SELECT FROM foo
  • HTML 和 CSS:悬停时显示 div [重复]

    这个问题在这里已经有答案了 我试图得到它 以便当有人将鼠标悬停在 div 框上时 它会在其下方显示一个单独的 div 框 我该怎么做呢 HTML div div h1 Home h1 div div div div
  • Firebase UI Recyclerview OnClick 不起作用,尝试了一切。这不是一个重复的问题

    我正在尝试在我的 Android 应用程序中添加 Firebase Recyclerview 当我添加时 所有数据都正常从 Firestore 获取 但是当涉及到处理 onClick 事件时 它根本不起作用 我遵循的事情 添加了带有方法的接
  • 在画布上绘制位图已缩放

    我创建了一个带有两个位图的自定义视图 当我在视图之外的 ImageView 中使用位图时 图像正常 我得打电话setDensity 240 hdpi 设备 但没关系 但是 在自定义视图中 当我在画布上绘制相同的位图时 onDraw Canv