`
yjnso
  • 浏览: 3290 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

svg实现星座图的绘制

    博客分类:
  • svg
阅读更多
也就是java的散点图,之前用jfreechart实现了一个,效果不理想,后来采用svg实现,还不错
不多说了直接上代码


svg文件


<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
	<!ENTITY ns_svg "http://www.w3.org/2000/svg">
	<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
]>

<svg width = "100%" height="100%">
<script xlink:href="../../js/monitor.js"></script>
	<rect x="0" y="0" id="rect1" width = "520" height="520" fill="black" stroke="white" stroke-width="0"></rect>
	
	

</svg>


monitor.js


var point = null;
var beginpoint = null;
var endpoint = null;
var SVGDoc;
var currentMode = 0;

var beginpointx = 0;
var beginpointy = 0;
var endpointx = 0;
var endpointy = 0;

var svgns = "http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink";
var svgDocument;
var svgRoot;
var parentwin;
var evt;
function initgis(evt) {
	evt = evt;
	svgDocument = evt.target.ownerDocument;
	svgRoot = svgDocument.documentElement;	
	parentwin = window.parent;
}

//绘制点的方法
function CreatePoint(svgDoc,pointx, pointy, id) {
	svgDocument = svgDoc;
	var svgns = "http://www.w3.org/2000/svg";
	var x = pointx;
	var y = pointy;

	var shape3 = svgDocument.createElementNS(svgns, "rect");
	shape3.setAttributeNS(null, "id", id);
	shape3.setAttributeNS(null, "x", x);
	shape3.setAttributeNS(null, "y", y);
	shape3.setAttributeNS(null, "width", "1");
	shape3.setAttributeNS(null, "height", "1");
	shape3.setAttributeNS(null, "fill", "green");
	svgDocument.documentElement.appendChild(shape3);
}

function RemovePoint(svgDoc,id) {
	svgDocument = svgDoc;
	var root = svgDocument.getRootElement();
	var vid = root.getElementById(id);
	if (vid != null) {
		root.removeChild(vid);
	}
}


jsp中相关代码

function GainConstellationGraphSVG(cardid,channel){
        		 var url = "<%=basePath%>ajax/GainConstellationGraphSVG.action?Rnd="+Math.random()+"&cardid="+cardid+"&channel="+channel;
        	     if(ajaxSvg){
	        	     ajaxSvg.open("get", url, true);
	        		 ajaxSvg.onreadystatechange = ConstellationGraphSVG;
	       			 ajaxSvg.send(null); 
       			 }
        	}
  			function ConstellationGraphSVG(){
      		  if (ajaxSvg.readyState == 4)
      			  {
		            if (ajaxSvg.status == 200)
		            {	
		            	var msg = ajaxSvg.responseText;
		              	 if (msg != "") {
                           	var list = msg.split('|');
                           	for (var i in list) {
								var point = list[i].split(',');
								svgWin = SVGGraph.window;
        						svgDoc = SVGGraph.getSVGDocument();
								svgWin.RemovePoint(svgDoc,point[2]);
							}
							for (var key in list) {
								var point = list[key].split(',');
								svgWin = SVGGraph.window;
        						svgDoc = SVGGraph.getSVGDocument();
								svgWin.CreatePoint(svgDoc,point[0], point[1],point[2]);
							}
                        }else{
                        	///alert("星座图加载失败!");
                            //return;
                        }
		            }
		          }
      		  }



<embed id="SVGGraph" name="SVGGraph" src="rect.svg" width="520" height="520" type="image/svg+xml" wmode="transparent"/>


没秒钟从后台获取到坐标数据,一共16*64个点,绘制点的时候定义了该点的ID,每次重新绘制点都会把之前的点给移除掉,相当于更新星座图。
svgWin = SVGGraph.window; 
svgDoc = SVGGraph.getSVGDocument();
这两个参数是关键点,第一个是获取jsp页面的星座图对象,第二个是获取SVG文档的DOM(文档对象模型)

效果图






  • 大小: 5.2 KB
分享到:
评论

相关推荐

    New-folder-(3).zip_javascript

    在JavaScript中实现QPSK信号星座图的绘制,通常会涉及到以下几个知识点: 1. **数据处理**:首先,需要将二进制数据转化为QPSK对应的相位值。这通常涉及到位运算和逻辑操作。 2. **数学运算**:理解QPSK的相位空间...

    星座旋转动画

    3. **SVG图形**:为了确保在不同设备和分辨率上都有良好的显示效果,可以选择使用SVG(Scalable Vector Graphics)格式来绘制星座图标。SVG是矢量图形,可以无限缩放而不失真,非常适合制作旋转动画的元素。 4. **...

    ConstallationApp:一个几年前的 javascripthtml5 canvas 随机星生成和 SVG 解析实验

    在ConstallationApp中,SVG可能被用来绘制星座的轮廓,确保在任何尺寸下都能保持清晰。SVG的另一个优点是其易于解析和操作,JavaScript可以方便地改变SVG元素的属性,实现动画和交互效果。 四、项目结构与实现 在...

    Egert实现五点连线

    从标题和描述来看,我们可以推测这是一个软件应用程序,其核心功能是让用户通过一次连续的线条绘制连接五个预设的点,以此来形成不同的图形,这些图形可能代表十二星座的图腾。接下来,我们将深入探讨这个项目所涵盖...

    线条12星座图标下载

    4. **矢量图形**:考虑到图标可能需要在各种尺寸下保持清晰,设计师通常会使用矢量图形软件(如Adobe Illustrator)来绘制线条图标,以确保图标在放大或缩小后不失真。 5. **排版与布局**:如果这些图标是作为一个...

    JS HTML5酷炫星空背景动画特效.zip

    在这个特效中,Canvas被用来绘制星空中的星星,以及可能的流星、星座等元素。 2. **JavaScript**:JavaScript是网页开发中的脚本语言,负责处理用户的交互事件、更新DOM(文档对象模型)以及控制Canvas动画。在星空...

    情人节结婚表白代码js表白树状图

    节点之间的关系可以通过CSS伪类如`:before`和`:after`来表示线条,或者利用SVG绘制线条。为了使树形结构更生动,可以添加动画效果,如节点的淡入淡出、线条的生长等。 此外,JavaScript中的事件监听是必不可少的。...

    virgo-icons

    Virgo Icons 可能包含一系列精心绘制的图形,这些图形可能包括处女座的星座图案、处女座符号、代表该星座性格特点的形象等。 处女座是十二星座之一,位于黄道带上,日期范围为8月23日至9月22日。这个星座通常被描绘...

    Natal_chart

    3. **SVG或Canvas绘图**:为了在网页上绘制星盘,开发者可能会使用SVG(可缩放矢量图形)或HTML5的Canvas元素,JavaScript可以直接操作这些元素来绘制复杂的图形。 4. **响应式设计**:为了适应不同设备的屏幕大小...

    绚彩日月星辰图标下载

    由于没有进一步的具体信息,我们只能推测这个压缩包可能包含了一系列精心绘制的、色彩绚丽的日月星辰图标,每个图标都代表了不同的天体或天文现象,比如太阳、月亮、行星、星座、彗星等。 【标签】:虽然没有提供...

    塔罗牌甲板:塔罗牌艺术项目的内容

    3. **SVG和PNG格式**:为了确保塔罗牌图像在不同尺寸下都能保持清晰,艺术家可能会选择使用矢量图形(SVG)或高分辨率的PNG格式。这两种格式都适合网页和移动应用,是IT行业中的常见文件类型。 4. **版权与知识产权...

Global site tag (gtag.js) - Google Analytics