gpt4 book ai didi

java - 绘制属性在应用两次时不起作用

转载 作者:行者123 更新时间:2023-12-02 10:09:34 25 4
gpt4 key购买 nike

我正在尝试创建一种具有白色和黑色轮廓的自定义影响字体(又名“模因字体”)。我在 Canvas 的两端都有 2 个文本,但只有其中一个反射(reflect)了更改。这是到目前为止我所拥有的:

enter image description here

这是我的代码:

        Canvas canvas = new Canvas(mutableBitmap);

TextPaint topFillPaint = new TextPaint();
TextPaint bottomFillPaint = new TextPaint();

TextPaint topStrokePaint = new TextPaint();
TextPaint bottomStrokePaint = new TextPaint();

Typeface typeface = getResources().getFont(R.font.impact);

topFillPaint.setColor(Color.WHITE);
topFillPaint.setTextSize(topTextView.getTextSize());
topFillPaint.setTypeface(typeface);

topStrokePaint.setStyle(Paint.Style.STROKE);
topStrokePaint.setStrokeWidth(8);
topStrokePaint.setColor(Color.BLACK);
topStrokePaint.setTextSize(topTextView.getTextSize());
topStrokePaint.setTypeface(typeface);

bottomFillPaint.setColor(Color.WHITE);
bottomFillPaint.setTextSize(bottomTextView.getTextSize());
bottomFillPaint.setTypeface(typeface);

bottomStrokePaint.setStyle(Paint.Style.STROKE);
bottomStrokePaint.setStrokeWidth(8);
bottomStrokePaint.setColor(Color.BLACK);
bottomStrokePaint.setTextSize(bottomTextView.getTextSize());
bottomStrokePaint.setTypeface(typeface);

float topTextMeasurement = topFillPaint.measureText(topText);
float bottomTextMeasurement = bottomFillPaint.measureText(bottomText);

StaticLayout topFillLayout = new StaticLayout(topText, topFillPaint, canvas.getWidth(), Layout.Alignment.ALIGN_CENTER,
1.0f, 0.0f, false);
StaticLayout topStrokeLayout = new StaticLayout(topText, topStrokePaint, canvas.getWidth(), Layout.Alignment.ALIGN_CENTER,
1.0f, 0.0f, false);


StaticLayout bottomFillLayout = new StaticLayout(bottomText, bottomFillPaint, canvas.getWidth(), Layout.Alignment.ALIGN_CENTER,
1.0f, 0.0f, false);
StaticLayout bottomStrokeLayout = new StaticLayout(bottomText, bottomStrokePaint, canvas.getWidth(), Layout.Alignment.ALIGN_CENTER,
1.0f, 0.0f, false);

canvas.translate(0,0);
topFillLayout.draw(canvas);

canvas.translate(0,0);
topStrokeLayout.draw(canvas);

canvas.translate(0, canvas.getHeight() - 210);
bottomFillLayout.draw(canvas);

canvas.translate(0, canvas.getHeigth() - 210);
bottomStrokeLayout.draw(canvas);

最佳答案

您传递来绘制bottomStrokeLayout 和bottomFillLayout 的坐标存在差异。

 canvas.translate(0, canvas.getHeight() - 210);
bottomFillLayout.draw(canvas);

canvas.translate(0,canvas.getHeight() -210);
bottomStrokeLayout.draw(canvas);

关于java - 绘制属性在应用两次时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55099847/

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