首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在android画布中绘制一个实心三角形?

如何在android画布中绘制一个实心三角形?
EN

Stack Overflow用户
提问于 2010-08-17 17:37:35
回答 6查看 104.3K关注 0票数 92

所以我在我的draw方法中使用下面的代码在android地图中绘制这个三角形:

代码语言:javascript
复制
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是我从字段中获得的坐标。它们基本上是纬度和经度。结果是一个漂亮的三角形,但内部是空的,因此我可以看到地图。有没有办法把它填满呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-08-17 17:50:36

您可能需要执行以下操作:

代码语言:javascript
复制
Paint red = new Paint();

red.setColor(android.graphics.Color.RED);
red.setStyle(Paint.Style.FILL);

并使用此颜色的路径,而不是您的ARGB。确保你路径的最后一个点在第一个点结束,这也是有意义的。

请告诉我它能不能用!

票数 44
EN

Stack Overflow用户

发布于 2010-08-17 18:58:31

好的,我已经做到了。我分享这段代码,以防其他人需要它:

代码语言:javascript
复制
super.draw(canvas, mapView, true);

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

paint.setStrokeWidth(2);
paint.setColor(android.graphics.Color.RED);     
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setAntiAlias(true);

Point point1_draw = new Point();        
Point point2_draw = new Point();    
Point point3_draw = new Point();

mapView.getProjection().toPixels(point1, point1_draw);
mapView.getProjection().toPixels(point2, point2_draw);
mapView.getProjection().toPixels(point3, point3_draw);

Path path = new Path();
path.setFillType(Path.FillType.EVEN_ODD);
path.moveTo(point1_draw.x,point1_draw.y);
path.lineTo(point2_draw.x,point2_draw.y);
path.lineTo(point3_draw.x,point3_draw.y);
path.lineTo(point1_draw.x,point1_draw.y);
path.close();

canvas.drawPath(path, paint);

//canvas.drawLine(point1_draw.x,point1_draw.y,point2_draw.x,point2_draw.y, paint);

return true;

谢谢你的提示,Nicolas!

票数 75
EN

Stack Overflow用户

发布于 2010-08-18 15:51:08

您还可以使用顶点:

代码语言:javascript
复制
private static final int verticesColors[] = {
    Color.LTGRAY, Color.LTGRAY, Color.LTGRAY, 0xFF000000, 0xFF000000, 0xFF000000
};
float verts[] = {
    point1.x, point1.y, point2.x, point2.y, point3.x, point3.y
};
canvas.drawVertices(Canvas.VertexMode.TRIANGLES, verts.length, verts, 0, null, 0, verticesColors,   0, null, 0, 0, new Paint());
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3501126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档