【问题标题】:How to draw a text in canvas in android [duplicate]如何在android的画布中绘制文本[重复]
【发布时间】:2015-01-29 06:31:58
【问题描述】:

我正在编写一个包含仪表视图的应用程序。我从here 下载,我想在仪表视图中绘制文本(即在仪表视图的中心)如何在仪表视图中绘制文本请帮助我。

在我的朋友在堆栈溢出中回答后,我这样做了,但它不起作用,请让它起作用

 private void drawGauge() 
    {
        if (null != mBackground) 
        {
           mBackground.recycle();
        }

        /*--For Semi circle put getHeight()/2--*/
        mBackground = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
        newBitmap = Bitmap.createBitmap(mBackground.getWidth(), mBackground.getHeight(), Config.ARGB_8888);
        Canvas newCanvas = new Canvas(newBitmap);
        final Canvas canvas = new Canvas(mBackground);
        final float scale = Math.min(getWidth(), getHeight());
        canvas.scale(scale, scale);
        canvas.translate((scale == getHeight()) ? ((getWidth() - scale) / 2) / scale : 0,(scale == getWidth()) ? ((getHeight() - scale) / 2) / scale : 0);

        Paint paintText = new Paint(Paint.ANTI_ALIAS_FLAG);
        paintText.setColor(Color.WHITE);
        paintText.setTextSize(50);
        paintText.setTextAlign(Align.CENTER);
        paintText.setStyle(Style.FILL);
        Rect rectText = new Rect();
        paintText.getTextBounds(captionString, 0, captionString.length(), rectText);
        newCanvas.drawText(captionString, 0, rectText.height(), paintText);


        //canvas.drawText("MedeQuip", 200, 500, shadowpaint);
        //drawRim(canvas);
        //drawFace(canvas);

对于 vipluv:

 protected void onDraw(final Canvas canvas) {
        drawBackground(canvas);
        final float scale = Math.min(getWidth(), getHeight());
        canvas.scale(scale, scale);
        canvas.translate((scale == getHeight()) ? ((getWidth() - scale) / 2) / scale : 0, (scale == getWidth()) ? ((getHeight() - scale) / 2) / scale : 0);

        if (mShowNeedle) {
            drawNeedle(canvas);
        }

        if (mShowText) {
            drawText(canvas);
        }

        Paint paintText = new Paint(Paint.ANTI_ALIAS_FLAG);
        paintText.setColor(Color.WHITE);
        paintText.setTextSize(150);
        paintText.setTextAlign(Align.CENTER);
        paintText.setStyle(Style.FILL);
        Rect rectText = new Rect();
        paintText.getTextBounds(captionString, 0, captionString.length(), rectText);
        canvas.drawText(captionString, rectText.width(), rectText.height(), paintText);

        computeCurrentValue();
    }

【问题讨论】:

标签: android text android-canvas


【解决方案1】:

在 GaugeView.java 文件的 onDraw() 函数中,在调用 computeCurrentValue() 之前添加一个 canvas.drawText()。

使用您自己的 Paint 对象,并确保您已初始化其 textsize 和 color 属性。

【讨论】:

  • 再次不工作,伙计,我照你说的做了@vipluv
  • 你确定你的textsize设置正确吗?根据我的经验,有时会绘制文本,但太小而无法看到。
  • 我将文本大小设置为 50 dude @vipluv
  • 你需要在 onDraw() 函数中添加 drawText(),@lakshman。不在 drawGauge() 函数中。
  • 在这里查看我在 onDraw() 之后执行的代码,但它对我不起作用,伙计
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多