• 画板社交工具开发分享——HTML5 canvas控件、PHP、社交分享学习(二)


    本小节主要记录下前端页面相关功能的实现。绘图功能主要是利用HTML5 的canvas控件来实现,利用JS来控制鼠标操作,实现绘图。同时利用下拉列表控件来选择不同的工具、不同的画笔颜色、不同的画笔宽度功能。同时利用JS来读取cookie从而验证用户是否登录。同时将生成的图片数据传递给后台进行图片生成,并在后台保存,供用户分享。所有的功能都只是雏形,也存在很大的不足,因此也有很大的提升空间。直接放源码:

    <!DOCTYPE HTML>
    <html>
    <title>
    </title>
    <head>
    	<!--css样式设置-->
    	<style type="text/css">
    		.class1{
    			font-family: Georgia;
    			font-size:15px;
    			color:red;
    			}		
    		#canvasDiv{
    			position:absolute;
    			}
    		#myCanvas{
    			cursor:url(pen.cur),default;
    			border-style: solid;
    			border-color: green green green green;
    			position:absolute; 			 
    			}
    		#toolsDiv{
    			50px;
    			height:60px;
    			position:absolute;
    			top:20px;
    			left:1050px;
    			}
    		#lineWidthDiv{
    			100px;
    			height:60px;
    			position:absolute;
    			top:20px;
    			left:1215px;
    			}
    		#lineW{
    			80px;
    			height:20px;
    			position:absolute;
    			top:38px;
    			}
    		#colorDiv{
    			50px;
    			height:60px;
    			position:absolute;
    			top:20px;
    			left:1130px;
    			}		
    		#buttonDiv{
    			100px;
    			height:100px;
    			position:absolute;
    			top:55px;
    			left:1310px;
    			}
    		#imageDiv{
    			250px;
    			height:200px;
    			border-style: solid;
    			border-color: green green green green;
    			position:absolute;
    			top:120px;
    			left:1050px;
    			}
    		#buttonDiv2{
    			150px;
    			height:100px;
    			position:absolute;
    			top:55px;
    			left:1390px;
    			}
    		#tipsDiv{
    			600px;
    			height:400px;
    			border-style: solid;
    			border-color: green green green green;
    			position:absolute;
    			top:400px;
    			left:1050px;
    			}
    		#copyrightDiv{
    			background-color:gray;
    			1680px;
    			height:30px;
    			position:absolute;
    			top:900px;
    			left:0px;
    			}
    		#copyright{
    			position:absolute;
    			left:650px;
    			}
    	</style>
    	<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
    </head>
    <body >
    	<!--添加HTML5 canvas控件-->
    	<div id="canvasDiv" onselectstart="return false"">
    	<canvas id="myCanvas" width=1000; height=800; onmousedown="MouseDown(event)" onmousemove="MouseMove(event)" onmouseup="MouseUp(event)">
    		你的浏览器不太兼容^_^,可以换用IE7以上版本或谷歌浏览器5以上版本。
    	</canvas>
    	</div>
    	<div id="lineWidthDiv" class="class1">
    	<br>线宽:</br>
    	<select onchange="IsLinewSelected(this.value);" id="lineW"> 	  
              <option value="1">1</option> 
              <option value="2" >2</option> 
              <option value="3" >3</option>
              <option value="4" >4</option>
              <option value="5" >5</option>
              <option value="6" >10</option>
              <option value="7" >15</option>
    	  <option value="8" >20</option>
              <option value="9" >25</option>
    	  <option value="10" >30</option>
    	  <option value="11" >35</option>
    	  <option value="12" >40</option>
     	</select> 
    	</div>
    	<div id="colorDiv" class="class1">
    	<br>颜色:</br>
    	<select onchange="IsColorSelected(this.value);" id="color"> 	  
              <option value="1">black</option> 
              <option value="2" >green</option> 
              <option value="3" >blue</option>
              <option value="4" >gray</option>
              <option value="5" >lime</option>
              <option value="6" >maroon</option>
              <option value="7" >navy</option>
    	  <option value="8" >olive</option>
              <option value="9" >purple</option>
    	  <option value="10" >red</option>
    	  <option value="11" >silver</option>
    	  <option value="12" >yellow</option>
     	</select> 
    	</div>
    	<div id="toolsDiv" class="class1">
    	<br>工具:</br>
    	<select onchange="IsToolsSelected(this.value);" id="tools"> 	  
              <option value="1">画笔</option> 
              <option value="2" >橡皮擦</option> 
              <option value="3" >清屏</option>         
     	</select> 
    	</div>
    	<div id="buttonDiv">
    	<button type="button" onclick="GeneratePic()">生成图片</button>
    	</div>
    	<div id="imageDiv" class="class1">
    	<img id="imageOne" src="" height=200 width=250 alt="等待生成图片ing">
    	</div>
    	<div id="buttonDiv2">
    	<button type="button" onclick="GetCookie()">分享</button>
    	</div>
    	<div id="tipsDiv" class="class1">
    	</br>
    	<label id="visitor">
    	欢迎来到“画语”世界,亲爱的访客!
    	</label>
    	<p>1.您可以在左边的画板上画上任意您想画的东西,然后点击生成图片、分享按钮,将您的“画语”分享给大家。</p>
    	<p>2.您可以进行登录,将您的图片保存在网站上。如果没有账号,请进行注册。<a href="register.html">【点我注册】</a>(未开通)</p>	
    	</br></br>
    	<p>(未开通)</p>
    	<form action="account.php" method="post">
      	Name: <input type="text" name="name" />
      	Password: <input type="text" name="pwd" />
      	<input type="submit" value="登录" />	
    	</form>
    	
    	</div>
    	<div id="copyrightDiv">
    	<span id="copyright">CopyRight @2013 XiaoChong    Version 1.0</span>
    	</div>
    
    <!--JS脚本 实现检查cookie验证用户登录、绘图功能-->
    <script type="text/javascript" charset="utf-8">
    		
    		var tempName="";
    		var nameEQ = "dwname" + "=";
     		var ca = document.cookie.split(';');
    		var flag = false;
     		for(var i=0;i < ca.length;i++){
    		var c = ca[i];
     		if(c.indexOf(nameEQ)==0)
    		{
    			tempName=decodeURIComponent(c.substring(nameEQ.length,c.length));
    			if(tempName==" ")
    			{
    			alert("未成功登陆^_^##");
    			break;	
    			}
    			else
    			{
    			flag = true;
    			document.getElementById("visitor").innerHTML="欢迎来到“画语”世界,亲爱的"+tempName+"!";
    			break;	
    			}	
    		}
    		if(flag == false) ;
    		//alert("未成功登陆^_^##");
     		}
    
    
    		function GetCookie() 
    		{ 
        		var nameEQ = "filecookie" + "=";
     		var ca = document.cookie.split(';');
    		var flag = false;
     		for(var i=0;i < ca.length;i++){
    		var cc = ca[i];
    	/*	while (cc.charAt(0)=='') 
    		cc=cc.substring(1,c.length);*/
     		if(cc.indexOf(nameEQ)==0)
    		{
    		var tempUrl=decodeURIComponent(cc.substring(nameEQ.length,cc.length));
    		if(tempUrl=="")
    		{
    		alert(tempUrl);
    		break;	
    		}
    		else
    		{
    		flag = true;
    		window.location.href="share.html";
    		break;	
    		}	
    		}
    		if(flag == false)
    		alert("图片未生成^_^##");
     		}	
    		}
    		<!--实现绘图功能函数-->
    		var c=document.getElementById("myCanvas");
    		var cxt=c.getContext("2d");
    		cxt.strokeStyle="black";
    		cxt.lineWidth=1;
    		var xStart,yStart;
    		var cursorStyle="url(pen.cur),default";
    		var checkDrawing=false;
    		var drawType="画笔";
    		var dataUrl="";
    		var offset=10;
    		var eraserWidth=5;
    
    		function MouseDown(e)
    		{
    			xStart=e.clientX-offset;
    			yStart=e.clientY-offset;
    			checkDrawing=true;			
    		}
    		function MouseMove(e)
    		{
    		if(checkDrawing)
    		{
    			if(drawType=="画笔")
    			{
    			cxt.beginPath();
    			cxt.moveTo(xStart,yStart);
    			cxt.lineTo(e.clientX-offset,e.clientY-offset);
    			cxt.stroke();
    			cxt.closePath();
    			xStart=e.clientX-offset;
    			yStart=e.clientY-offset;
    			}
    			if(drawType=="橡皮擦")
    			{
    			xStart=e.clientX-offset;
    			yStart=e.clientY-offset;
    			Eraser(e);
    			}
    				
    		}
    		}
    		function Eraser(e)
    		{
    			checkDrawing=true;
    			cxt.clearRect(xStart-eraserWidth,yStart-eraserWidth,e.clientX-xStart+eraserWidth,e.clientY-yStart+eraserWidth);
    			xStart=e.clientX-offset;
    			yStart=e.clientY-offset;
    		}
    		function MouseUp(e)
    		{
    			checkDrawing=false;
    		}
    
    		function IsLinewSelected(value)
    		{
    			if(drawType=="画笔")
    			{
    			var lineW = document.getElementById("lineW");
    			cxt.lineWidth=lineW.options[lineW.selectedIndex].innerText;
    			}
    			if(drawType=="橡皮擦")
    			{
    			var lineW = document.getElementById("lineW");
    			}
    		}
    		function IsColorSelected(value)
    		{
    			var color = document.getElementById("color");
    			cxt.strokeStyle=color.options[color.selectedIndex].innerText;
    		}
    		function IsToolsSelected(value)
    		{
    			var color = document.getElementById("tools");
    			drawType=tools.options[tools.selectedIndex].innerText;
    			if(drawType=="画笔")
    			cursorStyle="url(pen.cur),default";
    			if(drawType=="橡皮擦")
    			cursorStyle="url(eraser.cur),default";
    			c.style.cursor=cursorStyle;
    			if(drawType=="清屏")
    			{
    			cxt.clearRect(0,0,1000,800);
    			}
    		}
    		function GeneratePic()
    		{		
    		dataUrl = c.toDataURL('image/png');
    		$.post('./test.php',{ 'data' : dataUrl });
    		document.getElementById("imageOne").src = dataUrl;
    		//alert(document.getElementById("imageOne").src);
    		}
    		
    	</script>
    </body>
    </html>
    
    


  • 相关阅读:
    DSP Builder设计一个滤波器
    Modelsim 10.0 对Altera FFT IP 进行仿真
    FPGA内部计算小数
    TIOBE 2012年3月编程语言排行榜:JS超越Perl和Python
    转载 10个新鲜的Ajax相关的jQuery插件
    转载 使用HTML5、CSS3和jQuery增强网站用户体验
    转载 Java堆内存的10个要点
    累 腾讯笔试
    python 浮点数取整
    转载 一个页面重构工程师眼中的“用户体验”
  • 原文地址:https://www.cnblogs.com/aukle/p/3215080.html
Copyright © 2020-2023  润新知