我有一个 View ,我正在使用 onDraw(Canvas canvas) 方法中的 Canvas 对象进行绘制。我的代码是:
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
canvas.drawPaint(paint);
paint.setColor(android.R.color.black);
paint.setTextSize(20);
canvas.drawText("Some Text", 10, 25, paint);
问题是文本没有通过背景显示,我做错了什么?如果我删除 canvas.drawPaint(paint) 和 paint.setColor(android.R.color.black) 你可以在屏幕上看到文字.....
最佳答案
解决了这个问题,结果发现 android.R.color.black 与 Color.BLACK 不同。将代码更改为:
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
canvas.drawPaint(paint);
paint.setColor(Color.BLACK);
paint.setTextSize(20);
canvas.drawText("Some Text", 10, 25, paint);
现在一切正常!!
关于Android Canvas.drawText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2655402/
如何获取DrawText()使用的字体的默认字体高度?如果可能的话,我宁愿不设置新字体。 最佳答案 您可以使用GetTextExtentPoint32. 关于c-获取win32DrawText()的默认字体高度,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4992121/
正如我发布的here,我能够在我的WindowsForm上显示一些特殊字体但是我无法将这种字体保存为图片。问题是Graphic.DrawString()无法显示所有或特殊字体。WindowsForm使用TextRenderer及其更新版本(随2.0添加),这就是WindowsForm能够显示这些字体的原因。很好。现在我坐在这里并尝试用TextRenderer.DrawText()做同样的事情-我不得不说我的输出图像现在好多了但仍然不一样在窗体上。让我们看看我的代码:BitmapBit=newBitmap(500,200);Graphicsg=Graphics.FromImage(B
我正在尝试通过Qt5打印方法在热敏打印机中打印一条简单的文本消息。#include#include#include#include#includeintmain(intargc,char*argv[]){QCoreApplicationa(argc,argv);QPrinterprinter(QPrinter::ScreenResolution);QPainterpainter;painter.begin(&printer);painter.setFont(QFont("Tahoma",8));painter.drawText(0,0,"Test");painter.end();ret
因此,如果字符串有空格,或者如果我在字符串末尾输入\r\n,我可以让drawtext断开字符串。但是,其中没有空格或换行符的长字符串继续通过绘图矩形并被剪裁。如果可能的话,我想阻止这种情况。在我看来,drawtext的格式标志中没有任何东西能让它发生。有什么想法吗? 最佳答案 实际上,这在大多数情况下是你想要的,来自MSDN:DT_EDITCONTROLDuplicatesthetext-displayingcharacteristicsofamultilineeditcontrol.Specifically,theaveragec
我想将SpannedString绘制到Canvas。SpannableStringspannableString=newSpannableString("HelloWorld!");ForegroundColorSpanforegroundSpan=newForegroundColorSpan(Color.RED);BackgroundColorSpanbackgroundSpan=newBackgroundColorSpan(Color.YELLOW);spannableString.setSpan(foregroundSpan,1,8,Spannable.SPAN_EXCLUSIV
我正在使用Canvas.drawText()在自定义View上书写文本。我想在文本后面添加一个背景9-patchdrawable,所以我需要知道所绘制文本的边界。文本由用户提供,因此它不是固定大小。现在我使用的是等宽字体,我设法构建了一个看起来还不错的字体,但在手上我宁愿使用另一种字体。 最佳答案 您可以使用Paint的publicvoidgetTextBounds(Stringtext,intstart,intend,Rectbounds)方法来获取包含所有文本的矩形。看看getTextBounds.希望这对您有所帮助!
我正在做一个AppWidget,在它的设置中我让用户启用/禁用文本阴影。由于我无法通过RemoteViews类调用shadow方法,我正在执行动态绘制小部件及其容器的“绘制”方法。虽然绘制文本时,它变得有点模糊,不像使用TextView时那样清晰。我用于文字绘画的唯一代码是:Paintp=newPaint();p.setAntiAlias(true);p.setColor(Color.WHITE);我需要做任何其他的魔法让它变得更脆吗? 最佳答案 Paintpaint=newPaint(Paint.LINEAR_TEXT_FLAG|
我的Android应用程序以几种不同的方式显示文本,它们之间存在一些恼人的差异,我希望人们可以提供帮助。当我使用可能被称为“自动”的显示方法时,文本显示得非常好。通过自动方法,我指的是工具,例如Toasts和Button小部件,我只在其中提供文本,操作系统(或“环境”或其他)为我显示它。字母曲线优美,赏心悦目且易于辨认。但是,在我处理文本显示的代码中(在SurfaceRunnerView中使用Canvas.drawText()),文本质量很差。文字仍然清晰可辨,但看起来像素化了。这些字母看起来并不是最好的。我已经尝试使用Paint.setTypeface()进行试验,例如使用Typef
所以,我遇到了这个问题,我在背景图像顶部的Canvas上绘制的android文本没有显示。我的代码:@Overridepublicvoiddraw(Canvascanvas){finalfloatscaleFactorX=getWidth()/WIDTH;finalfloatscaleFactorY=getHeight()/HEIGHT;if(canvas!=null){finalintsavedState=canvas.save();canvas.scale(scaleFactorX,scaleFactorY);PainttextPaint=newPaint();textPaint.
我试图在我创建的表面View上写一些文本。如果title为false,并且文本中没有添加换行符,它工作正常。但是,如果我添加标题并因此添加换行符,换行符不会按预期打印,而是打印此符号[]。有什么提示吗?@OverridepublicvoiddrawObject(){Stringtext="";if(title){text=getGameBoard().getGame().getForeignProfile().getName()+"\n";}text=text+getScoreAsString();getGameBoard().getCanvas().drawText(text,0,t