【发布时间】:2010-01-08 19:58:51
【问题描述】:
我正在尝试做的基本描述: 加载背景图像,将一些文本绘制到新的位图图层中,将该文本放置在我希望它显示的背景图像上,然后将背景图像与新图层一起保存在我放置它的位置。
问题: 我遇到的问题是,当我在背景图像上绘制文本时,它最终会出现在错误的 x/y 位置。
例如: 1. 我加载了 ScaleType 设置为 Fit_Start 的 640x480 图像(将其缩小到 1/2 大小)。我正在跟踪比率并在将文本绘制到最终图像时使用它。
然后我创建一个空白的叠加位图,在其上绘制一些文本,修剪掉多余的透明空间,并将其放入另一个图像视图(矩阵的ScaleType)
-
然后我使用鼠标和 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);
然后我尝试使用 X 和 Y 将文本写入最终图像(背景图像),但我将 X 和 Y 加倍,因为我知道图像被缩小了一半以适应屏幕。
最终结果是文本被写入错误的位置。它最终会导致 X 稍微过多而 Y 不够(比如 25+,具体取决于背景图像的比例——这会有所不同)。
在某个地方我的数学有误,或者我忘记在公式中添加一些东西来计算文本应该绘制到的背景上的正确位置。我已经为此工作了好几个小时,但无法确定问题所在。
我尝试的最后一件事是考虑到标题栏和状态栏,它们在模拟器上占用了大约 50 像素。所以,我从 Y 中减去它,这是在拖动时完成的。但这仍然不能纠正 Y 因背景图像尺寸而异的数量。
有人对我做错了什么有任何想法吗?
【问题讨论】:
标签: android