【问题标题】:Adding overlay image at drag position on a final bitmap - Android在最终位图上的拖动位置添加叠加图像 - Android
【发布时间】:2010-01-08 19:58:51
【问题描述】:

我正在尝试做的基本描述: 加载背景图像,将一些文本绘制到新的位图图层中,将该文本放置在我希望它显示的背景图像上,然后将背景图像与新图层一起保存在我放置它的位置。

问题: 我遇到的问题是,当我在背景图像上绘制文本时,它最终会出现在错误的 x/y 位置。

例如: 1. 我加载了 ScaleType 设置为 Fit_Start 的 640x480 图像(将其缩小到 1/2 大小)。我正在跟踪比率并在将文本绘制到最终图像时使用它。

  1. 然后我创建一个空白的叠加位图,在其上绘制一些文本,修剪掉多余的透明空间,并将其放入另一个图像视图(矩阵的ScaleType)

  2. 然后我使用鼠标和 onTouchEvent 方法定位新的图像视图。我跟踪 X 和 Y:

    float X = event.getX();

    float Y = event.getY() - 50; // 标题栏、状态栏

    overlayView.layout((int)X, (int)Y, overlay.getWidth() + (int)X, overlay.getHeight() + (int)Y);

  3. 然后我尝试使用 X 和 Y 将文本写入最终图像(背景图像),但我将 X 和 Y 加倍,因为我知道图像被缩小了一半以适应屏幕。

  4. 最终结果是文本被写入错误的位置。它最终会导致 X 稍微过多而 Y 不够(比如 25+,具体取决于背景图像的比例——这会有所不同)。

在某个地方我的数学有误,或者我忘记在公式中添加一些东西来计算文本应该绘制到的背景上的正确位置。我已经为此工作了好几个小时,但无法确定问题所在。

我尝试的最后一件事是考虑到标题栏和状态栏,它们在模拟器上占用了大约 50 像素。所以,我从 Y 中减去它,这是在拖动时完成的。但这仍然不能纠正 Y 因背景图像尺寸而异的数量。

有人对我做错了什么有任何想法吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    我认为这还不是您的问题,但我认为您需要考虑设备密度。因为标题栏 + 状态栏不会是 50 像素,而是 50 像素

    【讨论】:

    • 另外,你不能依赖于所有设备上的状态栏都是 50dp。我敢肯定它没有模拟器上的那么多(?)
    • 好点。我会从你的第一个布局尺寸开始计算。但是,它并不能解释 x 差异。你对你的观点有什么补充吗?如大小:标题栏沿是 26 dip + 通知栏。
    • 感谢标题栏和通知栏的信息。实际上,我最终解决了我的问题,尽管我现在还不能 100% 确定我做了什么,因为我做了很多改变。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多