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

wz_jsgraphics.js 在图片上画直线、圆、矩形

阅读更多

 

借用 wz_jsgraphics.js 提供的方法,在图片上画直线、圆、矩形。

 

在图片上随意点两个点即可画直线、圆、矩形

 

coordinate.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>坐标</title>
<script type="text/javascript" src="wz_jsgraphics/wz_jsgraphics.js"></script>
</head>

<body>
<div style="position:absolute;top:100px;left:20px;" id="myCanvas" name="myCanvas">
<img src="5034ab190d1db.jpg" id="test_img" name="test_img" onclick="vControl('GETMOUSEPOSINPIC',this)" />


 <script language="javascript" type="text/javascript">  
 
 var jg = new jsGraphics("myCanvas");
 
 //jg.setColor("#ff0000"); // 选择红色 
 //jg.drawLine(93, 33, 144, 114); // 坐标点相对于 div 元素 "myCanvas" 
 //jg.paint(); 
 
var JPos = {};  
(function($){  
    $.$getAbsPos = function(p){  
        var _x = 0;  
        var _y = 0;  
        while(p.offsetParent){  
                _x += p.offsetLeft;  
                _y += p.offsetTop;  
                p = p.offsetParent;  
        }  
          
        _x += p.offsetLeft;  
        _y += p.offsetTop;  
          
        return {x:_x,y:_y};  
    };  
      
    $.$getMousePos = function(evt){  
        var _x,_y;  
        evt = evt || window.event;  
        if(evt.pageX || evt.pageY){  
            _x = evt.pageX;  
            _y = evt.pageY;  
        }else if(evt.clientX || evt.clientY){  
            _x = evt.clientX + document.body.scrollLeft - document.body.clientLeft;  
            _y = evt.clientY + document.body.scrollTop - document.body.clientTop;  
        }else{  
            return $.$getAbsPos(evt.target);      
        }  
        return {x:_x,y:_y};  
    }  
})(JPos);  

// 点击数 
var clickCount = 1;
// 在图片上随意点的两个点的坐标
var X1, Y1, X2, Y2;

function vControl(pChoice){ 
	
    switch(pChoice){  
        case "GETMOUSEPOSINPIC":  
            var mPos = JPos.$getMousePos();  
            var iPos = JPos.$getAbsPos(arguments[1]);
			
			// 第一次触发时表示第一个点的坐标,
			// 第二次触发时表示第二个点的坐标
			var temp = (mPos.x - iPos.x) + ":" + (mPos.y - iPos.y);
			
			if (1 == clickCount) {
			
				clickCount = clickCount + 1;
				
				// 第一个点的坐标
				document.getElementById("coordinate1").value = temp;
				
			} else if ( clickCount > 1) {
				// 选择要画的图形
				var choose_fun = document.getElementById("choose_fun").value;
				
				if (0 == choose_fun) {
					alert("请选择");
					return false;
				}
				// 第二个点的坐标
				document.getElementById("coordinate2").value = temp;
				
				if (clickCount >= 2) {		
				
					jg.clear();
					
					var p1 = document.getElementById("coordinate1").value;
					var p2 = document.getElementById("coordinate2").value;
					
					X1 = p1.split(":")[0];
					Y1 = p1.split(":")[1];
					
					X2 = p2.split(":")[0];
					Y2 = p2.split(":")[1];
					
					jg.setColor("#55bb55"); // 选择蓝色
					jg.setStroke(3);
					
					if (1 == choose_fun) {
						// 画直线: 通过两个点的坐标
						jg.drawLine(parseInt(X1), parseInt(Y1), parseInt(X2), parseInt(Y2));
					} else if (2 == choose_fun) {
						/* 画圆 : 两个点之间的长度作为圆的半径 */
						// 平方值
						var p_1 = Math.pow(X1,2) + Math.pow(Y1, 2);
						var p_2 = Math.pow(X2,2) + Math.pow(Y2, 2);
						// 圆半径
						var r = Math.abs(Math.round(Math.sqrt(p_1) - Math.sqrt(p_2)));
						
						// 画直线
						jg.drawLine(parseInt(X1), parseInt(Y1), parseInt(X2), parseInt(Y2));
						
						// 画圆
						var deg=-1;
						setInterval(function()
						{
						deg++;
						x = parseInt(X1) + r*Math.cos(deg*Math.PI/180)+"px";
						y = parseInt(Y1) + r*Math.sin(deg*Math.PI/180)+"px";
						//alert(x + " " + y);
						myCanvas.innerHTML +="<div id='"+deg+"' style='position:absolute;margin:0px;width:3px; height:3px; background-color:#55bb55; left:"+x	                                                +"; top:"+y+";'></div>"},3);
					} else if (3 == choose_fun) {
						/* 画矩形 : 通过两个点 */
						// 1. 确定哪个点是左上角
						
						// 矩形的边长
						var width = Math.abs(parseInt(X1) - parseInt(X2));
						/// 矩形的高
						var highth = Math.abs(parseInt(Y1) - parseInt(Y2));
						
						if (parseInt(X1) < parseInt(X2)&& parseInt(Y1) > parseInt(Y2)) {
							// (X1,Y2)是左上角
							// 一个矩形的外边线。参照左上角的坐标点,并指定矩形的宽度和高度
							jg.drawRect(parseInt(X1), parseInt(Y2), width, highth);
							
						} else if (parseInt(X1) > parseInt(X2) && parseInt(Y1) < parseInt(Y2)) {
							// 左上角坐标是 (X2, Y1)
							jg.drawRect(parseInt(X2), parseInt(Y1), width, highth);
							
						} else if (parseInt(X1) > parseInt(X2) && parseInt(Y1) > parseInt(Y2)){
							// 左上角坐标是 (X2, Y2)
							jg.drawRect(parseInt(X2), parseInt(Y2), width, highth);
						} else if (parseInt(X1) < parseInt(X2) && parseInt(Y1) < parseInt(Y2)){
							// 左上角坐标是 (X1, Y1)
							jg.drawRect(parseInt(X1), parseInt(Y1), width, highth);
						}
						
					}
					jg.paint();
				}
			}
			
             // 设置状态栏文本
            window.status = (mPos.x - iPos.x) + " " + (mPos.y - iPos.y);  
              
            break;  
    }
}


</script>  
</div>  
<div align="center">
<select id="choose_fun" name="choose_fun">
	<option value="0">请选择</option>
	<option value="1">直线</option>
	<option value="2">圆</option>
	<option value="3">矩形</option>
</select>
<br />
<input type="text" id="coordinate1" />
<br />
<input type="text" id="coordinate2" />
</div>
</body>
</html>

 

 

 

分享到:
评论

相关推荐

    js画矢量图(wz_jsgraphics.js)

    wz_jsgraphics.js+index.html 博文链接:https://sailinglxg.iteye.com/blog/142290

    wz_jsgraphics.js

    wz_jsgraphics.js 专门用来绘制简单线条的 javaScript 的js包..简单实例可以去这里看看.. hi.baidu.com\johnny 自己汇总的..不是很全.谢谢

    java script 画图函数包 wz_jsgraphics.js 3.03

    谁说JavaScript 不能画图呢? 从服务器端生成分析图再下载到游览器在服务器资源以及网络传输上都...资源中有wz_jsgraphics.js 3.03, 有其使用说明,还有一个简单的例子. 我试用了一下,可以的. 打算在一个项目中使用一下.

    wz_jsgraphics.js javascript 画图

    你是不是认为js就只能处理各文字检验,图片反转等等,你用js画过多变形吗,画过椭圆吗。来看人家写的这个js代码,从画线到画多变形。。。。强呀!

    wz_jsgraphics(1).zip_javascript 图形_wz_jsgraphics_wz_jsgraphics.j

    是一个非常详尽而有趣的JS库,它提供了绘制几何图形的功能,例如直线、圆、正方形

    jquery-wz_jsgraphics.zip

    该函数可以实现画各种线条、矩形、圆形等图形,通过鼠标点击获取起点位置和终点位置。

    通过wz_jsgraphics在js上画图

    NULL 博文链接:https://wubinclat.iteye.com/blog/649882

    wz_jsgraphics

    js, 画图,画线, jsgraphics

    wz_jsgraphics DIV画图

    JS库,用DIV来画图,在任何浏览器都可能画线

    用纯JS写的图表统计脚本jqchart

    用jquery写的图表统计脚本 canvaschartpainter.js canvaschartpainter.src.js chart.js chart.src.js chartplugin.js excanvas.js iecanvas.htc iecanvas.js jgchartpainter.js ...wz_jsgraphics.js

    js画图包及使用方法

    js画图 js画图包及使用方法 wz_jsgraphics wz_jsgraphics使用

    js画图包这是个德国人写的很强大

    js画图包这是个德国人写的很强大,可以实现一般图形的绘制,填充。里面的统计图例子中js文件引入的路径有问题应该改为&lt;script type="text/javascript" src="wz_jsgraphics.js"&gt;&lt;/script&gt;

    honobbs论坛系统最新版

    │ │ │ │ │ │ fckspellcheckcommand_gecko.js 441 bytes │ │ │ │ │ │ fckspellcheckcommand_ie.js 1.07 KB │ │ │ │ │ │ fckstylecommand.js 2.25 KB │ │ │ │ │ │ ...

    动态图表绘制_jsgraphics框架1.10

    JSGraphics版本1.10,重新设计了类,更好的封装了私有函数,规范了公有函数接口,解决了firefox下不能显示问题

    l利用js实现仪表盘

    利用js模拟仪表盘的实现利用jsgraphics.js库下载 后 打开仪表盘.html 然后将图层 拖拽宽和高 必须一样

Global site tag (gtag.js) - Google Analytics