Questions tagged «android-canvas»

Android Java画布(android.graphics.Canvas)

10
画布上的Android Center文本
我正在尝试使用下面的代码显示文本。问题是文本没有水平居中。当我为设置坐标时drawText,它将在此位置设置文本的底部。我希望绘制文本,以便文本也水平居中。 这是进一步显示我的问题的图片: @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); //canvas.drawRGB(2, 2, 200); Paint textPaint = new Paint(); textPaint.setARGB(200, 254, 0, 0); textPaint.setTextAlign(Align.CENTER); textPaint.setTypeface(font); textPaint.setTextSize(300); canvas.drawText("Hello", canvas.getWidth()/2, canvas.getHeight()/2 , textPaint); }

8
测量要在Canvas上绘制的文本高度(Android)
有没有直接测量文字高度的方法?我现在的操作方式是使用Paint measureText()来获取宽度,然后通过反复试验找到一个值来获取近似高度。我也一直在摸索FontMetrics,但是所有这些似乎都是很糟糕的近似方法。 我正在尝试按不同的分辨率缩放内容。我可以做到,但是最终我得到了冗长的冗长代码,需要大量计算才能确定相对大小。我讨厌它!一定有更好的方法。


16
在画布上绘制多行文字
一个希望快速的问题,但我似乎无法找到任何的例子...我想多行文本写一个自定义的View通过Canvas,并在onDraw()我有: ... String text = "This is\nmulti-line\ntext"; canvas.drawText(text, 100, 100, mTextPaint); ... 我希望这会导致换行,但我看到的是隐秘字符\n。 任何指针表示赞赏。 保罗

3
了解画布和曲面概念
我正在努力理解绘制过程,SurfaceView因此整个过程Surface/ Canvas/Bitmap系统,该系统采用的是Android使用。 我已经阅读了所有文章和API文档页面,这些页面可以在android-developers网站上找到,一些关于android图形的教程,LunarLander源代码以及这个问题。 请告诉我,这些陈述中哪些是正确的,哪些不是,以及原因。 Canvas有它自己的Bitmap附件。Surface有它自己的Canvas附件。 所有View窗口共享相同的窗口Surface,因此共享相同的窗口Canvas。 SurfaceView是的子类View,与其他View子类及其View本身不同,它有自己Surface的特点。 另外还有一个问题: Surface如果已经有Canvas使用位图进行高级操作的原因,为什么需要一个类。举一个Canvas不适合做Surface可以做的工作的情况的例子。



7
Android画布绘制矩形
如何绘制带有等的空矩形。borderWidth = 3和borderColor = black,矩形内的部分没有内容或颜色。在Canvas中使用哪个功能 void drawRect(float left, float top, float right, float bottom, Paint paint) void drawRect(RectF rect, Paint paint) void drawRect(Rect r, Paint paint) 谢谢。 我尝试这个例子 Paint myPaint = new Paint(); myPaint.setColor(Color.rgb(0, 0, 0)); myPaint.setStrokeWidth(10); c.drawRect(100, 100, 200, 200, myPaint); 它绘制矩形并用黑色填充它,但我只想像这样的图像周围“框架”:


18
Android,canvas:如何清除(删除)位于surfaceView中的画布(=位图)的内容?
为了制作简单的游戏,我使用了一个模板,该模板使用如下位图绘制画布: private void doDraw(Canvas canvas) { for (int i=0;i<8;i++) for (int j=0;j<9;j++) for (int k=0;k<7;k++) { canvas.drawBitmap(mBits[allBits[i][j][k]], i*50 -k*7, j*50 -k*7, null); } } (画布在“ run()”中定义,/ SurfaceView位于GameThread中。) 我的第一个问题是如何清除(或重画)整个画布以形成新布局? 其次,如何仅更新屏幕的一部分? // This is the routine that calls "doDraw": public void run() { while (mRun) { Canvas c = null; try { …

2
Android Canvas.drawText
我有一个视图,我正在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),则可以在屏幕上看到文本。

8
如何在Android canvas中绘制实心三角形?
因此,我在我的draw方法中使用以下代码在Android地图中绘制了这个三角形: paint.setARGB(255, 153, 29, 29); paint.setStyle(Paint.Style.FILL_AND_STROKE); paint.setAntiAlias(true); Path path = new Path(); path.moveTo(point1_returned.x, point1_returned.y); path.lineTo(point2_returned.x, point2_returned.y); path.moveTo(point2_returned.x, point2_returned.y); path.lineTo(point3_returned.x, point3_returned.y); path.moveTo(point3_returned.x, point3_returned.y); path.lineTo(point1_returned.x, point1_returned.y); path.close(); canvas.drawPath(path, paint); pointX_returned是我从字段中获取的坐标。它们基本上是经度和纬度。结果是一个漂亮的三角形,但内部人员为空,因此我可以看到地图。有办法以某种方式填充它吗?

5
Android中的十六进制颜色有时为8位数字。怎么样?#FFFFFF和#FFFFFF00有什么区别
我有时在示例中看到Android的着色为#FF191919。我的意思是8位十六进制数字。但是它只能是一个6位数字。它们有什么关系?如果我想o将6位数字转换为8位数字。怎么做?我的意思是将#424242转换为8位数字的颜色?请让我知道细节。感谢您的时间和帮助。

8
如何在Android中通过画布绘制圆?
我想按画布画圆。这是我的代码: [MyActivity.java]: public class MyActivity extends Activity { public void onCreate(Bundle savedInstanceState) { ... setContentView(new View(this,w,h)); } } [View.java]: public class View extends SurfaceView { public View(Context context, int w, int h) { super(context); Canvas grid = new Canvas(Bitmap.createBitmap(h,w, Bitmap.Config.ARGB_8888)); grid. drawColor(Color.WHITE); Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); grid.drawCircle(w/2, h/2 …

2
如何在位图上绘制粗体文本?
我想要一个带有粗体文本的位图图标以将其绘制在地图上。我有一个片段可以在图片上写文字: Bitmap icon = BitmapFactory.decodeResource(PropertyMapList.this.getResources(), R.drawable.location_mark); TextPaint paint = new TextPaint(); paint.setColor(Color.BLACK); paint.setTextSize(14); paint.setFakeBoldText(true); //paint.setTextAlign(Align.CENTER); Bitmap copy = icon.copy(Bitmap.Config.ARGB_8888, true); Canvas canvas = new Canvas(copy); //canvas.drawText(jsonObj.getString("district_name"), 5, canvas.getHeight()/2, paint); String districtName = jsonObj.getString("district_name"); StaticLayout layout = new StaticLayout((districtName.length()>25 ? districtName.substring(0, 24)+"..":districtName)+"\n"+jsonObj.getString("total_properties"), paint, canvas.getWidth()-10,Layout.Alignment.ALIGN_CENTER, 1.3f, 0, false); canvas.translate(5, canvas.getHeight()/2); //position the …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.