我目前正在尝试绘制并填充一个在Java中有一个洞的Polygon.通常这不会是一个大问题,因为我会绘制外环,然后用背景颜色绘制内环.

但问题是,多边形显示在应该通过孔“看到”的图像上方.

我用Java编写代码,并使用JTS Topology Suite作为我的几何数据.

这是我当前的代码,它只绘制边框并用颜色填充多边形.

private void drawPolygon(com.vividsolutions.jts.geom.Polygon gpoly, Color color, Graphics2D g2d){

java.awt.Polygon poly = (java.awt.Polygon)gpoly;

for(Coordinate co : gpoly.getExteriorRing().getCoordinates() {

poly.addPoint(co.x, co.y);

}

g2d.setColor(col);

g2d.fill(poly);

g2d.setColor(Color.BLACK);

g2d.draw(poly);

}

解决方法:

>使用“多边形”作为“区域”的基础(例如,称为polygonShape).

>为’hole’创建一个Ellipse2D,然后为它建立一个Area(ellipseShape).

>使用Area.subtract(Area)之类的东西:

Area polygonWithHole = polygonShape.subtract(ellipseShape);

标签:java,polygon,draw,awt,jts

来源: https://codeday.me/bug/20190609/1202785.html

java drawpolygon_Java如何绘制和填充有孔的Polygon相关推荐

  1. 技巧 | OpenCV中如何绘制与填充多边形

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 很多人都问过我这个问题,OpenCV中 ...

  2. java k线绘制,用Java绘制K线图[Java编程]

    赞助商链接 本文"用Java绘制K线图[Java编程]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具 ...

  3. 使用OpenCV进行多边形绘制和填充

    OpenCV中在图像上进行多边形绘制和填充的函数分别为polylines和fillPoly,在图像分割任务中午中,可用于将预测结果绘制到目标图像. 简单的实现: import cv2 import n ...

  4. Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题。

    Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题. 适用场景: 1.固定格式的W ...

  5. MATLAB绘制平面填充图入门详解

    一.引言 在画图的时候,为了让图形更加清晰突出,往往需要对某一条或几条曲线围成的区域进行填冲颜色,以得到填充图.对于平面图形的填充,可以matlab的命令fill和area等实现. 二.fill命令的 ...

  6. java实现七巧板问题_[Java教程]canvas,绘制七巧板

    [Java教程]canvas,绘制七巧板 0 2016-11-03 13:00:04 //定义一个数组变量,分别代表七巧板的七块 //每一部分是一个类的对象,每一部分包含一个p, //p也是一个数组, ...

  7. 包及权限配置java存储机理绘制

    包及权限配置 包的声明和导入 //声明 package aa.bb.cc; public class A{;} class B{;} //即在java输出目录aa.bb.cc中放入编译后的A.clas ...

  8. Matlab绘制带有填充区域的曲线

    Matlab绘制带有填充区域的曲线 https://zhuanlan.zhihu.com/p/435763835 效果如图所示: clear;clc; syms t n = 50; x = linsp ...

  9. python心脏线绘制代码_C++和Java命令行绘制心形图代码分享

    C++和Java命令行绘制心形图案 心形线 心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名. 心脏线亦为蚶线的一种.在曼德博集合正中间的图 ...

最新文章

  1. 智能,万亿维空间中的求解
  2. Linux系统文件类型
  3. M1事后分析报告--We have power to change the origin state
  4. 不从事编程、学python有用吗-没想到,学会Python即使不做程序员都能月入过万!...
  5. 设计模式之反射与配置文件
  6. c#中out、ref和params的用法与区别
  7. 动态规划思路和Python解决零钱兑换问题和最大乘积子序列的乘积的问题
  8. PyTorch学习笔记:torch.optim---Optimizer以及lr_scheduler
  9. arm-linux-gcc 和Makefile
  10. Doris之DataX doriswriter
  11. 大数据平台应用开发的痛点有哪些
  12. 【转】Java 中正确使用 hashCode 和 equals 方法
  13. java web 分页 基于sql 2005 数据库
  14. 适合 Java 新手的开源项目集合——在 GitHub 学编程
  15. DDD领域驱动设计详解
  16. python爬数据实例_Python实例教程爬虫爬取NBA数据功能示例
  17. 模块划分-4 模块划分
  18. absolute和relative的区别
  19. 怎么把html在别人电脑上打开文件,html文件怎么打开?电脑用浏览器打开html文件的方法...
  20. Wangle中EchoClient分析

热门文章

  1. jQuery:ajax调用成功后返回数据
  2. 如何在Python中表示一个无限数?
  3. 写入Visual Studio的输出窗口
  4. 将普通的数组转换为父子结构(vue,element-ui)
  5. 若n = 2; m = 5 则 计算 2 + 22 + 222 + 2222 + 22222的和 ;若n = 3; m = 4 则 计算 3 + 33 + 333 + 3333的和
  6. linux usb 同步传输,从设备到主机的用户模式USB等时传输
  7. java option_option 的经典属性
  8. MybatisPlus报错: org.apache.velocity.context.Context(已解决)
  9. 那些年开发中遇到的坑。。。
  10. opencv之retina滤波器---Retina_create