gpt4 book ai didi

java - 可以将一半的文本以不同的颜色绘制到 Canvas 上吗?

转载 作者:行者123 更新时间:2023-12-01 11:15:04 27 4
gpt4 key购买 nike

在我的表盘中,我创建 Paint 对象来绘制文本,然后将其传递给 Canvas 类的 drawText() 方法。

假设我想绘制时间,0841。我可以用一种颜色绘制前两位数字,用另一种颜色绘制最后两位数字吗?

例如,我想用白色绘制前两个数字,并用红色绘制最后两个数字。我可能可以创建单独的 Paint 对象并单独绘制分钟/小时,但我担心如果这样做的话对齐会变得乏味。

我附上了一张图片来演示我的意思。

Paint hourPaint = new Paint();
hourPaint.setAntiAlias(true);
hourPaint.setTextSize(timeSize);

enter image description here

最佳答案

是的,实现这一点非常简单。你走在正确的轨道上。尝试这样的事情:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

public class ClockView extends View {
private Paint mHourPaint;
private Paint mMinutePaint;
private float mFontSize;

public ClockView(Context context) {
this(context, null);
}

public ClockView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public ClockView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);

init();
}

private void init() {
mFontSize = 92.0f;

mHourPaint = new Paint();
mHourPaint.setAntiAlias(true);
mHourPaint.setColor(Color.WHITE);
mHourPaint.setStyle(Paint.Style.FILL);
mHourPaint.setTextSize(mFontSize);

mMinutePaint = new Paint();
mMinutePaint.setAntiAlias(true);
mMinutePaint.setStyle(Paint.Style.FILL);
mMinutePaint.setColor(Color.RED);
mMinutePaint.setTextSize(mFontSize);
mMinutePaint.setFakeBoldText(true);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

String hourText = "08";
String minuteText = "41";

final float x = mHourPaint.measureText(hourText);
canvas.drawText(hourText, 0, mFontSize, mHourPaint);

canvas.drawText(minuteText, x, mFontSize, mMinutePaint);
}
}

还请务必考虑视口(viewport)大小 - 您不想绘制超出 View 边界的内容。

关于java - 可以将一半的文本以不同的颜色绘制到 Canvas 上吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933107/

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