`
pipe
  • 浏览: 206693 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 风玫瑰图

    博客分类:
  • j2se
阅读更多
由于项目的需要,需要一个风玫瑰图来描述风向。
画风玫瑰图的步骤如下:
1.创建一个BufferedImage ,设置它的宽度X和高度Y。
 
BufferedImage bi =new BufferedImage(chart.getX(), chart.getY(),
				BufferedImage.TYPE_INT_BGR);

2.创建Graphics2D g;
g = (Graphics2D) bi.getGraphics();
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, chart.getX(), chart.getY());
//用白色做背景填充整个画布。
		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,				RenderingHints.VALUE_ANTIALIAS_ON); 
	g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,				RenderingHints.VALUE_STROKE_DEFAULT);
//这里是消除画图的锯齿.

3.画直线。
public void drawLine(int x1, int y1, int x2, int y2, Color color) {
		g.setColor(color);//设置直线的颜色
		g.drawLine(x1, y1, x2, y2);
	}

4.画三角形
public void drawPolygon(int[] xPoints, int[] yPoints, Color fillColor,
			Color lineColor) {
		g.setColor(fillColor);
		g.fillPolygon(xPoints, yPoints, 3);//填充
		g.setColor(lineColor);
		g.drawPolygon(xPoints, yPoints, 3);
	}

这里xPoints是三个点的横坐标,与之对应的是yPoints,是三个点的纵坐标
5.添加描述
public void drawString(int x, int y, String str, Color c) {
		g.setColor(c);
		g.drawString(str, x, y);// x,y为str的坐标
	}

6.重点:确定每个点要画多少个像素。描述:如:1年内东北风12次,东风3次,XX风X次,从这些次数中获取最大值,比如最大为12,那么根据原点坐标(画布x/2,画布y/2)这2个坐标中选取最小值,来除以12,获得每个点画的像素
7.这个图是16个方位图,那么16个方位的最顶点坐标要分别计入数组中,如东东南方向的最顶点坐标(300,300);那么就是 int[] een = {300,300};
8.根据16个方位的最顶点坐标来画三角形和直线。
具体是这样的: 正北(最高点),原点,东北北,这三个方位最高点画三角形,填充颜色红色。东北,原点,东东北 三个最高点画三角形,填充红色,东北北,原点,东北画三角形 ,填充白色,这里是第一区间的的,其他几个区间以此类推。见我上传的附件图片中表示方法。
9.保存图片到文件中,如C:\a.jpg
try {
			FileOutputStream out = new FileOutputStream("C://a.jpg");
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(w.bi);//这里w.bi即为BufferedImage
			param.setQuality(1.0f, false);
			encoder.setJPEGEncodeParam(param);
			encoder.encode(w.bi);
			out.flush();
			out.close();
		} catch (Exception EE) {
			System.out.println(EE);
		}

10.通过servlet展示
	ImageIO.write(pro.getChart().getBi(), "JPEG", response
				.getOutputStream());
//这里pro.getChart().getBi(),即为BufferedImage


先写到这吧!java画图是一个体力活!需要耐心。
可能写得不详细,仅供参考。
  • 描述: 居然不让我传JPEG格式?所以将JPEG改成jpg了。
  • 大小: 50.9 KB
分享到:
评论

相关推荐

    test-pm10_MeteoInfoLab绘制污染玫瑰图_

    **污染玫瑰图**,又称为风向频率玫瑰图或风玫瑰图,是一种常见的环境科学图表,用于显示特定地点在一段时间内不同风向的频率和强度分布。在空气污染监测中,这种图可以结合PM10浓度数据,帮助研究人员和公众理解污染...

    121.zip_气象风速_海洋_玫瑰风向图_风速风向_风速风向图

    描述中的“可画风玫瑰图,用于判断风向风速”进一步说明了这个压缩包可能包含用于生成风玫瑰图的程序或者数据。这种图表对于研究气象、海洋环境极其重要,因为它可以帮助科学家和研究人员分析某一地区的风向模式以及...

    全屏玫瑰花表白软件,单身狗的必备

    2. **图形渲染**:为了让玫瑰花看起来逼真且动态,可能采用了OpenGL或DirectX等图形库进行3D渲染,或者使用SVG矢量图实现高清无损的2D显示。 3. **编程语言**:开发这样的软件,开发者可能使用了像C#、Java或Python...

    2023-JAVA物联网风电监测源码

    1. 显示机组的运行数据,如机组的瞬时发电功率、累计发电量、发电小时数、风轮及电机的转速和风速、风向等,用风玫瑰图、曲线或图表的形式直观地显示出来。 2. 显示风电机组的运行状态。 3. 显示各机组运行过程中...

    基于Java+MySQL实现(Web)模拟风电场监控项目【100011988】

    7.3 强大的风势折线与风频玫瑰图 1)实时风速折线图:统计实时风速的变化并由折线图动态展示。 2)风速玫瑰图:统计风速在十六个方向的时间区间及大小变化频率,更加清晰的展示最大最小风速详情。 3)风向玫瑰图:...

    印度尼西亚代马克的海岸线变化分析

    使用风数据通过风玫瑰图(WRPLOT)处理,使用Sverdrup Munk Bretschneider(SMB)方法进行波浪预测,进行潮汐数据处理以了解平均高水位(MHWL)的值来进行侵蚀和吸积分析,平均海平面(MSL),平均最低水平面(MLWL...

    积分java源码-Raiku:非阻塞-AkkaIO驱动-带有可爱DSL的Scala的Riak客户端

    山玫瑰花瓣 时不时坠落, 到瀑布的声音? 概述 Raiku 之于 Riak,就像瀑布之于 Akka; 一个简单的 Riak 客户端,它让 Riak 流向您的 Scala 应用程序。 它的目标是作为 Java Riak 驱动程序的非阻塞、专注于性能的全面...

    windrose:模拟指南针的安卓应用

    风玫瑰(WindRose)是一款基于Android平台的模拟指南针应用,旨在为用户提供类似真实指南针的功能,同时也作为学习和理解Android系统以及其内置传感器的实践项目。开发者通过这个应用,可以深入探究Android系统的API...

    Android界面开发推荐颜色

    - **花白色(#fffaf0)**:接近于象牙白,但更偏向自然色彩。 - **柠檬雪纺色(#fffacd)**:带有淡黄的白色,给人清新的感觉。 - **玉米色(#fff8dc)**:类似于浅黄色,带有轻微的奶油质感。 - **海贝壳色(#fff5...

    Android图表

    南丁格尔玫瑰图 (NightingaleRoseChart) **布局文件配置:** ```xml android:id="@+id/roseChartSmall" android:layout_width="match_parent" android:layout_height="wrap_content" /> ``` **Java代码示例...

    WEST-开源

    5. **可视化工具**:通过内置或第三方可视化软件,如ParaView,用户可以直观地查看和分析模拟结果,如风速分布图、风向玫瑰图等。 在压缩包中,`run.bat`是一个批处理文件,用于启动WEST应用。用户只需双击运行,...

    程序员表白专用代码

    - 常见的表白代码形式包括生成浪漫的图形,如爱心、玫瑰或表白的话语;播放定制的音乐或音频;或者创建交互式的网页应用,让接收者通过参与体验感受到程序员的用心。 3. **编程语言的选择** - 不同的编程语言有着...

    me

    您分享玫瑰并且获得乐趣。 [目录] 一,计算机科学(CS) 第一部分:计算机组成原理(计算机组成原理) 1.概述(概述) 1.1简介 1.1.1 1.1.2 1.1.3 1.2基本组成 1.2.1 1.2.2 1.2.3 2.系统总线(System Bus) 2.1...

    android里的颜色设置.pdf

    - **花白色**:`<color name="floralwhite">#FFFAF0</color>` - **柠檬绸色**:`<color name="lemonchiffon">#FFFACD</color>` - **米绸色**:`<color name="cornsilk">#FFF8DC</color>` - **海贝色**:`...

    2016-2020年软件设计师上午+下午真题(含参考答案).zip

    《2016-2020年软件设计师上午+下午真题(含参考答案)》这个压缩包文件集合了过去五年间软件设计师考试的历年真题,是备考软件设计师考试的重要参考资料。软件设计师作为信息技术领域的一个专业职称,其考试涵盖了...

    jQuery 多级菜单 16种炫彩样式(典藏版)

    2. rosy-brown:玫瑰棕色给人一种温馨和亲切的感觉,适合生活类或女性向的网站。 3. dim-gray:暗灰色调,低调而不失稳重,适用于商务类网站。 4. royal-blue:皇家蓝,富有尊贵感,适合高端品牌展示。 5. yellow-...

    相亲交友婚恋源码.zip

    3. **后端开发**:通常,交友平台的后端由服务器端语言(如PHP、Python、Java等)编写,负责处理用户请求、数据存储、业务逻辑等。后端开发者需要关注性能优化、安全性以及数据库设计。 4. **数据库架构**:...

Global site tag (gtag.js) - Google Analytics