当前位置: 首页 > news >正文

二手房网签合同在哪个网站做/设计外包网站

二手房网签合同在哪个网站做,设计外包网站,抽奖网站建设,食品网站建设 网站定制开发如何在android画布中绘制一个填充三角形?所以我在我的绘图方法中使用下面的代码在android地图中绘制这个三角形:paint.setARGB(255, 153, 29, 29);paint.setStyle(Paint.Style.FILL_AND_STROKE);paint.setAntiAlias(true);Path path new Path();path.mo…

如何在android画布中绘制一个填充三角形?

所以我在我的绘图方法中使用下面的代码在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是我从字段中获得的坐标。 它们基本上是纬度和经度。结果是一个漂亮的三角形,但内部人员是空的,因此我可以看到地图。 有办法以某种方式填补它吗?

8个解决方案

70 votes

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

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;

感谢尼古拉斯的暗示!

Pavel answered 2019-04-16T01:17:38Z

39 votes

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

Paint red = new Paint();

red.setColor(android.graphics.Color.RED);

red.setStyle(Paint.Style.FILL);

并使用此颜色作为您的路径,而不是您的ARGB。 确保路径的最后一点在第一点结束,这也是有道理的。

告诉我它是否有效!

Nicolas C. answered 2019-04-16T01:17:04Z

10 votes

你也可以使用vertice:

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());

GBouerat answered 2019-04-16T01:18:03Z

6 votes

065cb706118ca1a832419b91fe165e09.png

此函数显示如何从位图创建三角形。 也就是说,创建三角形裁剪图像。 请尝试下面的代码或下载演示示例

public static Bitmap getTriangleBitmap(Bitmap bitmap, int radius) {

Bitmap finalBitmap;

if (bitmap.getWidth() != radius || bitmap.getHeight() != radius)

finalBitmap = Bitmap.createScaledBitmap(bitmap, radius, radius,

false);

else

finalBitmap = bitmap;

Bitmap output = Bitmap.createBitmap(finalBitmap.getWidth(),

finalBitmap.getHeight(), Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(output);

Paint paint = new Paint();

final Rect rect = new Rect(0, 0, finalBitmap.getWidth(),

finalBitmap.getHeight());

Point point1_draw = new Point(75, 0);

Point point2_draw = new Point(0, 180);

Point point3_draw = new Point(180, 180);

Path path = new Path();

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.drawARGB(0, 0, 0, 0);

paint.setColor(Color.parseColor("#BAB399"));

canvas.drawPath(path, paint);

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

canvas.drawBitmap(finalBitmap, rect, rect, paint);

return output;

}

上面的函数返回在画布上绘制的三角形图像。

Daniel Nyamasyo answered 2019-04-16T01:18:33Z

4 votes

private void drawArrows(Point[] point, Canvas canvas, Paint paint) {

float [] points = new float[8];

points[0] = point[0].x;

points[1] = point[0].y;

points[2] = point[1].x;

points[3] = point[1].y;

points[4] = point[2].x;

points[5] = point[2].y;

points[6] = point[0].x;

points[7] = point[0].y;

canvas.drawVertices(VertexMode.TRIANGLES, 8, points, 0, null, 0, null, 0, null, 0, 0, paint);

Path path = new Path();

path.moveTo(point[0].x , point[0].y);

path.lineTo(point[1].x,point[1].y);

path.lineTo(point[2].x,point[2].y);

canvas.drawPath(path,paint);

}

Faakhir answered 2019-04-16T01:18:50Z

4 votes

使用@ Pavel的答案作为指导,如果你没有点但是有x,y和高度和宽度的起点,这里有一个辅助方法。 也可以倒置/倒置 - 这对我来说很有用,因为它被用作垂直条形图的结尾。

private void drawTriangle(int x, int y, int width, int height, boolean inverted, Paint paint, Canvas canvas){

Point p1 = new Point(x,y);

int pointX = x + width/2;

int pointY = inverted? y + height : y - height;

Point p2 = new Point(pointX,pointY);

Point p3 = new Point(x+width,y);

Path path = new Path();

path.setFillType(Path.FillType.EVEN_ODD);

path.moveTo(p1.x,p1.y);

path.lineTo(p2.x,p2.y);

path.lineTo(p3.x,p3.y);

path.close();

canvas.drawPath(path, paint);

}

scottyab answered 2019-04-16T01:19:13Z

3 votes

首次初始化后,您需要删除path.moveTo。

Path path = new Path();

path.moveTo(point1_returned.x, point1_returned.y);

path.lineTo(point2_returned.x, point2_returned.y);

path.lineTo(point3_returned.x, point3_returned.y);

path.lineTo(point1_returned.x, point1_returned.y);

path.close();

kaftanati answered 2019-04-16T01:19:37Z

1 votes

每个lineTo()后不要moveTo()

换句话说,删除除第一个之外的每个moveTo()。

说真的,如果我只是复制粘贴OP的代码并删除不必要的moveTo()调用,它就可以了。

没有别的事情需要做。

编辑:我知道OP已经发布了他的“最终工作解决方案”,但他没有说明它的工作原理。 实际的原因让我非常惊讶,所以我觉得有必要添加一个答案。

oli.G answered 2019-04-16T01:20:27Z

http://www.lbrq.cn/news/756019.html

相关文章:

  • 不会做网站如何做seo/自己怎么建网站
  • 快速优化网站排名搜索/深圳网站制作公司
  • 关于网站建设与维护的参考文献/网络推广外包公司干什么的
  • 免费微网站制作教程视频/seo优化公司哪家好
  • 建设银行善融商务网站装修/百度游戏客服在线咨询
  • 国外建站系统/淘宝seo优化是什么
  • 怎么查网站备案接入商/武汉全网推广
  • 如何做自己网站的seo/精准引流推广团队
  • 我的世界做图的网站/百度公司的业务范围
  • 邢台网站建设服务商/seo点击软件
  • 东莞企业高端网站建设/百度新闻下载安装
  • 做阿里巴巴类似的网站/2022最新小学生新闻
  • 龙岩网站制作教程/湖南seo推广多少钱
  • 苏州网站建设公司找哪家/优化营商环境评价
  • 百度推广网站怎么做/汽车营销活动策划方案
  • 南京网站设计价格/现在推广什么app最挣钱
  • 广东华业建设有限公司网站/怎样把个人介绍放到百度
  • 网站建设电话销售话术模板大全/口碑营销方案
  • 河南专业网站建设公司/网站推广哪个平台最好
  • 重庆建站模板厂家/营销推广seo
  • 电商网站怎么做支付/企业线上培训平台
  • 58同城怎么做网站/seo任务
  • 网站不备案可以做淘宝客吗/百度排行
  • 首页制作教程/台州seo
  • 东莞做网站建设/营销策略都有哪些
  • 域名空间网站/网站访问量查询工具
  • 做网站v赚钱/巨量算数
  • dedecms怎么制作网站/湘潭seo优化
  • 在线写作网站/推广引流软件
  • 做导航网站有发展吗/搜索引擎优化需要多少钱
  • 基于Uni-app+vue3实现微信小程序地图固定中心点范围内拖拽选择位置功能(分步骤详解)
  • 用 1 张 4090 复现 GPT-3.5?——单卡 24 GB 的「渐进式重计算」训练实践
  • 2025年机械制造、机器人与计算机工程国际会议(MMRCE 2025)
  • GitHub 仓库代码上传指南
  • 从根源到生态:Apache Doris 与 StarRocks 的深度对比 —— 论开源基因与长期价值的优越性
  • 树莓派 4B 上部署 Minecraft PaperMC 1.20.x 的一键部署脚本