gpt4 book ai didi

Android,从中心偏移绘制时钟

转载 作者:太空狗 更新时间:2023-10-29 13:19:32 24 4
gpt4 key购买 nike

我正在尝试使用 Android API 实现此 WatchFace:

ScreenShot of desired watch face

这些是我用于时、分和秒的颜料:

secondsPaint.setAntiAlias(true);
secondsPaint.setColor(Color.RED);
secondsPaint.setStyle(Paint.Style.STROKE);
secondsPaint.setStrokeJoin(Paint.Join.ROUND);
secondsPaint.setStrokeWidth(3f);
secondsPaint.setAntiAlias(true);
minutesPaint.setColor(Color.WHITE);
minutesPaint.setStyle(Paint.Style.STROKE);
minutesPaint.setStrokeJoin(Paint.Join.ROUND);
minutesPaint.setStrokeWidth(4f);
hoursPaint.setAntiAlias(true);
hoursPaint.setColor(Color.WHITE);
hoursPaint.setStyle(Paint.Style.STROKE);
hoursPaint.setStrokeJoin(Paint.Join.ROUND);
hoursPaint.setStrokeWidth(5f);

我已经实现了以下代码来绘制背景、秒、分钟和小时:

// Background
canvas.drawBitmap(background, 0, 0, null);

然后我画小时和分钟

// Draw the minute and hour hands.
float minX = (float) Math.sin(minRot) * minLength;
float minY = (float) -Math.cos(minRot) * minLength;
canvas.drawLine(centerX, centerY, centerX + minX, centerY + minY, minutesPai
float hrX = (float) Math.sin(hrRot) * hrLength;
float hrY = (float) -Math.cos(hrRot) * hrLength;
canvas.drawLine(centerX, centerY, centerX + hrX, centerY + hrY, hoursPaint);

最后是秒

// draw seconds
float secX = (float) Math.sin(secRot) * secLength;
float secY = (float) -Math.cos(secRot) * secLength;
canvas.drawLine(centerX, centerY, centerX + secX, centerY + secY, secondsPaint);

我需要:

  • 在屏幕中间创建一个圆圈并移动小时,分钟和秒与中心的几个像素像图片显示。
  • 让秒和分更“流畅”因为抗锯齿已设置,但未按预期工作

目前的结果如下:

Actual WatchFace

最佳答案

画一个圆就像使用drawCircle()一样简单。
因此,肮脏的技巧可能是绘制白色的和另一个更大的(甚至可能是更小的)相同背景颜色的,以覆盖分钟和秒针的部分。

因此,在手的之后绘制时,这些圆圈将覆盖您要隐藏的部分。

一个非常简单的技巧(不涉及其他三角函数)。
肯定有效。

您甚至可以使用图层列表可绘制对象覆盖在中心...;)

但是drawCircle()我想这很简单。

关于Android,从中心偏移绘制时钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30755410/

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