- 浏览: 5160805 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
今天处理一个奇怪的需求,B/S系统中,网页中显示顶点位置可变的五边形,想了想,好像一般的JS图表软件实现不了。只好借助JAVA在服务器端生成。当年的数学基础忘得差不多了,试了好半天,才把这个简单的函数写好。
整个函数可能对很多人没有太大意义,但其中的设置背景、设置半透明、绘制多边形、填充多边形、设置字体、输出文字、生成图片等代码有一定的借鉴意义。
生成的图形如下图所示:
整个函数可能对很多人没有太大意义,但其中的设置背景、设置半透明、绘制多边形、填充多边形、设置字体、输出文字、生成图片等代码有一定的借鉴意义。
/** * 生成五边形用的函数 * @param dstImg,输出图片文件名称 * @param v1,有效值为0-4 * @param v2,有效值为0-4 * @param v3,有效值为0-4 * @param v4,有效值为0-4 * @param v5,有效值为0-4 * 作者:wallimn<br/> * 时间:2015-3-28<br/> * 联系:54871876@qq.com<br/> */ public final static void pressFive(String dstImg,int v1,int v2,int v3,int v4,int v5) { try { int picWidth=600,picHeight=600; BufferedImage bufferedImage = new BufferedImage(picWidth, picHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g = bufferedImage.createGraphics(); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1.0f)); //填充背景 g.setColor(new Color(255,255,255)); g.fillRect(0, 0, picWidth, picHeight); int min = 90,deta=20,mark=50; int [][]p1 = new int[5][2]; for(int i=0; i<5; i++){ p1[i][0]=picWidth/2; p1[i][1]=picHeight/2-min-deta*i; } int [][]px = new int[5][5]; //一维:五个角中的那个角,二维:从里到外0-4 int [][]py = new int[5][5]; double angle=0.0; //计算五个五边形的顶点。 for(int i=0; i<5; i++){ angle = 72*Math.PI*i/180; for(int j=0; j<5; j++){ px[i][j]=(int) Math.round(picWidth/2+(min+deta*j)*Math.sin(angle)); py[i][j]=(int) Math.round(picHeight/2-(min+deta*j)*Math.cos(angle)); } } //绘制五个五边形 g.setColor(new Color(128,128,128)); for(int i=0; i<5; i++){ g.drawPolygon(new int[]{px[0][i],px[1][i],px[2][i],px[3][i],px[4][i]}, new int[]{py[0][i],py[1][i],py[2][i],py[3][i],py[4][i]}, 5); } //绘制根据指定的顶点序号,绘制五边形 g.setColor(new Color(0,204,255)); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f)); g.fillPolygon(new int[]{px[0][v1],px[1][v2],px[2][v3],px[3][v4],px[4][v5]}, new int[]{py[0][v1],py[1][v2],py[2][v3],py[3][v4],py[4][v5]}, 5); //输出文字 g.setColor(new Color(16,16,16)); int fontsize=12; g.setFont(new Font("黑体",Font.PLAIN,fontsize)); String [] text = {"金","木","水","火","土"}; g.drawString(text[0]+"/"+(v1)*mark, px[0][4],py[0][4]-fontsize); g.drawString(text[1]+"/"+(v2)*mark, px[1][4],py[1][4]); g.drawString(text[2]+"/"+(v3)*mark, px[2][4],py[2][4]+fontsize); g.drawString(text[3]+"/"+(v4)*mark, px[3][4]-fontsize*7,py[3][4]); g.drawString(text[4]+"/"+(v5)*mark, px[4][4]-fontsize*7,py[4][4]); g.dispose(); //保存图片 ImageIO.write(bufferedImage, PICTRUE_FORMATE_JPG, new File(dstImg)); } catch (IOException e) { e.printStackTrace(); } }
生成的图形如下图所示:
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18501编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2394部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3388两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 17711.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7654一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1253我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3258做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1152写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 3973大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2364一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7500我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2748@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2075转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3077用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1747element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9786示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6574申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5300最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5285springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10398微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
4. **填充多边形:** 应用边缘填充算法来填充绘制完成的多边形,确保填充效果均匀且美观。 **技术要求:** - 多边形的顶点数量应无上限,允许用户根据需要添加任意数量的顶点。 - 程序应支持在绘制过程中通过Shift...
4. **绘制填充**:遍历屏幕上的每一个像素,对每个像素执行步骤3中的判断。如果像素在多边形内,则在该位置绘制颜色,以填充多边形。 5. **使用`QPainter`绘制**:在`QPainter`对象上使用`drawPolygon()`方法绘制...
在这个项目"java绘制复杂图形并输出图片"中,可能包含了一个名为`capMainboard`的子文件或类,这可能是一个主程序或关键组件,用于组织和执行图形绘制以及图片输出的逻辑。通过分析和运行这个`capMainboard`,我们...
在提供的压缩包文件"案例7-多边形边缘填充算法"中,很可能会包含一个示例程序,演示了如何用C++实现上述的一种或多种填充算法。通过分析和学习这个示例,开发者可以更好地理解和掌握如何在实际项目中应用这些技术。...
在计算机图形学中,"多边形图片随多边形大小进行填充"是一个常见的应用场景,尤其是在游戏开发、UI设计和视觉艺术中。这个主题涉及到图像处理、图形渲染以及多边形变换等多个知识点。 首先,我们要理解多边形的概念...
本示例聚焦于“绘制规则多边形”这一主题,利用SuperMap iClient 6R for JavaScript,我们可以创建并展示出各种几何形状,如矩形、正方形、圆形以及具有固定边数的多边形等。 SuperMap iClient 6R是SuperMap公司...
在计算机图形学中,多边形填充是一种基本的技术,用于在屏幕上绘制闭合多边形的内部区域。这种技术广泛应用于2D图形渲染、游戏开发、CAD设计等多个领域。本资料包“不同方式的多边形填充.rar”显然是关于探讨多边形...
在计算机图形学中,填充多边形是一种常见的任务,它涉及到如何有效地在屏幕上描绘出一个闭合图形的内部。在MFC(Microsoft Foundation Classes)框架下实现这一功能,我们可以利用数据结构和算法来提高效率。本文将...
本项目利用C++编程语言和QT库实现了一个扫描线填充多边形的示例。下面将详细阐述相关知识点。 首先,我们来看“扫描线法”。扫描线法是一种基于水平线(扫描线)来填充多边形的算法,其基本思想是将屏幕上的每一条...
资源文件“多边形平滑填充(颜色过渡三角形)”可能包含了实现上述逻辑的代码示例,包括获取顶点、三角化、颜色插值和像素绘制等步骤。通过分析和学习这个代码,开发者可以更好地理解和实现多边形平滑填充的效果。 ...
最后,根据有效边规则,我们在屏幕上绘制像素来填充多边形。 4. **数据结构和算法**: 为了高效地处理边,我们可以使用优先队列(例如,C++中的`std::priority_queue`)来存储按Y坐标排序的边。每次处理新的扫描线...
在MFC中,实现扫描线填充多边形的过程如下: 1. 首先,使用Bresenham算法绘制出多边形的边界。 2. 接着,确定多边形的最小y坐标和最大y坐标,作为填充的扫描线范围。 3. 对于每一行y坐标,找到与之相交的边界的x坐标...
Bresenham算法是用于绘制直线的常用方法,它在填充多边形边界时起着关键作用。通过确定像素是应该在当前线段的左边还是右边来决定是否被填充。这个算法是基于错误修正的概念,通过逐步接近理想直线来确定像素的采样...
在填充多边形时,通常会采用扫描线算法,即从上到下遍历每一行,检查每条扫描线与多边形边缘的交点,根据这些交点将颜色填充到相应像素。由于代码中并未完整展示扫描线填充算法,可以推断 `create_edgetable` 函数的...
在实际应用中,我们常常通过鼠标来绘制多边形,并选择一种颜色进行填充。 区域填充算法的基本思想是通过找到边界像素,然后沿着边界向内部像素扩展,直到填满整个多边形。这个过程通常涉及到两个关键步骤:边界检测...
### 四、填充多边形 #### 4.1 设置填充样式 使用`setfillstyle`函数设置填充模式和填充颜色。这里的填充模式为6(即交叉线填充),填充颜色为黄色。 ```c setfillstyle(6, YELLOW); ``` #### 4.2 执行填充 使用`...
如果需要填充多边形内部,可以使用`FillPolygon`方法,它接受一个Brush对象来定义填充颜色: ```csharp SolidBrush fillBrush = new SolidBrush(Color.Blue); g.FillPolygon(fillBrush, polygonPoints); ``` 对于...
`Graphics` 类有两个关键方法,`drawPolygon()` 用于绘制边框型多边形,而 `fillPolygon()` 则用于填充多边形内部。这两个方法都有两种不同的参数类型。 - 第一种参数类型: 这种方式需要传入三个参数:一个整型...
在计算机图形学中,填充多边形是一种基本的渲染技术,尤其在2D图形界面中广泛应用。本主题将深入探讨如何使用Windows图形设备接口(GDI)中的win32 API来实现扫描线填充多边形的方法。扫描线填充算法是解决这一问题...