gpt4 book ai didi

Android - 触摸绘图

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:50 25 4
gpt4 key购买 nike

我正在查看 this sample drawing app由 Google 开发,当我在模拟器中运行应用程序并尝试用鼠标绘图时,绘图显示不流畅。圆圈之间出现间隙。只有当我慢慢拖动鼠标时,我才能得到一条完整的线。我还没有实际的设备来对此进行测试,所以我想知道这是否也是实际设备上的情况,或者这是模拟器的行为?

如果这也是它在设备上的显示方式,我应该怎么做才能使触摸绘图流畅?

更新:

实际绘制的代码是:

private void drawPoint(float x, float y, float pressure, float width) {
if (width < 1) width = 6;
if (mBitmap != null) {
float radius = width / 2;
int pressureLevel = (int)(pressure * 255);
mPaint.setARGB(pressureLevel, 255, 255, 255);
mCanvas.drawCircle(x, y, radius, mPaint);
mRect.set((int) (x - radius - 2), (int) (y - radius - 2),
(int) (x + radius + 2), (int) (y + radius + 2));
invalidate(mRect);
}
}

@Override public boolean onTouchEvent(MotionEvent event) {
int N = event.getHistorySize();
int P = event.getPointerCount();

for (int i = 0; i < N; i++) {
for (int j = 0; j < P; j++) {
mCurX = event.getHistoricalX(j, i);
mCurY = event.getHistoricalY(j, i);
drawPoint(mCurX, mCurY,
event.getHistoricalPressure(j, i),
event.getHistoricalTouchMajor(j, i));
}
}
for (int j = 0; j < P; j++) {
mCurX = event.getX(j);
mCurY = event.getY(j);
drawPoint(mCurX, mCurY, event.getPressure(j), event.getTouchMajor(j));
}
}

如果能帮助改进它,我们将不胜感激。

enter image description here

最佳答案

它会是锯齿状的,但我相信代码是在绘制点,所以如果你只是画一条线,从最后一端绘制的地方开始到新的点,它将是连续的。

是的,它在实际设备上看起来是一样的。

我根据内存所做的另一个选项是,有一些压力值介于 0 和 255 之间,或者 0 和 1 之间,始终将其设置为最高值。这实际上可能是您问题的简单解决方案。

顺便说一句,如果您显示实际进行绘图的代码,将会有所帮助。

更新:

正如我提到的改变这一行:

int pressureLevel = (int)(pressure * 255);

int pressureLevel = (int)(255);

应该可以解决您的问题。

如果不是这样,那么您可能只想使用 drawLine 而不是使用 drawCircle,那么您将跟踪刚刚绘制的最后一个圆。

关于Android - 触摸绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7701340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com