VML+JSP

----index.jsp

<%@ page contentType="text/html; charset=gb2312"  language="java" import="xj.hwl.mycos" errorPage="" %>
<HTML xmlns:v='urn:schemas-microsoft-com:vml' xmlns:o='urn:schemas-microsoft-com:office:office'>
<HEAD>
<META http-equiv='Content-Type' content='text/html;charset=gb2312'>
<TITLE>吾之画</TITLE>
<STYLE>
v/:*{behavior:url(#default#VML);}
o/:*{behavior:url(#default#VML);}
</STYLE>

</HEAD>
<BODY bgcolor='#EEEEEE' style='scrollbar-base-color:purple;scrollbar-shadow-color:white;scrollbar-highlight-color:white;scrollbar-arrow-color:white;'>
<%
System.out.println("----------");
mycos mc=new mycos();
String pains=mc.pain(100,300,150,mc.myangdegs,mc.values,mc.myangdegs_name);
out.println(pains);
%>
</BODY>
</HTML>

------java

package xj.hwl;

import java.lang.Math;

public class mycos {

 /**
  * @param args
  */
 public static final String OVAL_FILLCOLOR = "#EEAAAA";
 public static final String OVAL_FILLCOLOR_0_90 = "#FF0000";
 public static final String OVAL_FILLCOLOR_90_180 = "#00FF00";
 public static final String OVAL_FILLCOLOR_180_270 = "#0000FF";
 public static final String OVAL_FILLCOLOR_270_360 = "#00FFFF";
 
 public static final double[] myangdegs = { 0, 30, 60, 90, 105, 120, 135,
   150, 165, 180, 198, 216, 234, 252, 270, 292.5, 315, 337.5, 360 };
 public static final String[] myangdegs_name = { "正", "右", "右右", "右右右", "右右右", "右右右", "右右右右右",
  "右右右右", "右右右", "正", "左左左左", "左左左左左左", "左左左左左", "左左左", "左左左", "左左左左左左左", "左左左左左左左", "左左", "左左" };

 public static final int[] values = { 10, 5, 3, 10, 2, 4, 2, 2, 3,10, 1, 5, 3,
   4, 10, 8, 10, 10, 10};

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  double angdeg = 240, r = 100, x, y, angrad = Math.toRadians(angdeg);
  System.out.println(Math.sin(angrad));
  x = Math.sin(angrad) * r;
  y = Math.cos(Math.PI - angrad) * r;
  System.out.println("(" + x + "," + y + ")");
 }

 public String pain(int top,int left,int r,double[] angdegs,int[] value,String[] myangdeg_names){
  String pains="";
  int width=2*r,height=2*r,rxleft=left+r,rytop=top+r;
  double x,y,angrad,zx,zy,vx,vy;
  String xs,ys,polylines="";
  pains="<?xml:namespace prefix=v />";
// 先画圆
  pains=pains+"<v:oval style='z-index:1;left:"+left+"px;width:"+width+"px;position:absolute;top:"+top+"px;height:"+height+"px' coordsize='21600,21600' fillcolor='"+OVAL_FILLCOLOR+"'></v:oval>";
  pains=pains+"/n";
  for(int i=0;i<angdegs.length;i++){
   angrad=Math.toRadians(angdegs[i]);
   x=Math.sin(angrad)*r;
   y=Math.cos(Math.PI-angrad)*r;
// 画线
   xs=String.valueOf(x);
   ys=String.valueOf(y);
   pains=pains+"<v:line style='z-index:1003;left:"+rxleft+"px;position:absolute;top:"+rytop+"px' from='0,0' to='"+xs+","+ys+"' strokecolor='black' strokeweight='1pt'></v:line>";
   pains=pains+"/n";

//写字
   zx=x+rxleft;
   zy=y+rytop;
   if (angdegs[i]==0){
    pains=pains+"<SPAN style='FONT-SIZE:12px;Z-INDEX:1002;LEFT:"+zx+"px;COLOR:#000000;FONT-FAMILY:宋体;POSITION:absolute;TOP:"+(zy-10)+"px'>"+myangdeg_names[i]+"</SPAN>"; 
   }else if(angdegs[i]>0&&angdegs[i]<180){
    pains=pains+"<SPAN style='FONT-SIZE:12px;Z-INDEX:1002;LEFT:"+zx+"px;COLOR:#000000;FONT-FAMILY:宋体;POSITION:absolute;TOP:"+zy+"px'>"+myangdeg_names[i]+"</SPAN>"; 
   }else if (angdegs[i]==180){
    pains=pains+"<SPAN style='FONT-SIZE:12px;Z-INDEX:1002;LEFT:"+zx+"px;COLOR:#000000;FONT-FAMILY:宋体;POSITION:absolute;TOP:"+zy+"px'>"+myangdeg_names[i]+"</SPAN>"; 
   }else if(angdegs[i]>180&&angdegs[i]<360){
    pains=pains+"<SPAN style='FONT-SIZE:12px;Z-INDEX:1002;LEFT:"+(zx-myangdeg_names[i].length()*12)+"px;COLOR:#000000;FONT-FAMILY:宋体;POSITION:absolute;TOP:"+zy+"px'>"+myangdeg_names[i]+"</SPAN>";    
   }
   pains=pains+"/n";
   

// 画里面图形 
   vx=Math.sin(angrad)*value[i]*r/10;
   vy=Math.cos(Math.PI-angrad)*value[i]*r/10;
   if(angdegs[i]==0){
    polylines="<v:Polyline style='Z-INDEX:1001;LEFT:"+rxleft+"px;POSITION:absolute;TOP:"+rytop+"px' points='0,0,"+vx+","+vy;
   }else if(angdegs[i]==90){
    
    polylines=polylines+","+vx+","+vy+",0,0' fillcolor='"+OVAL_FILLCOLOR_0_90+"' strokeweight='1pt'></v:Polyline>";
//    System.out.println(polylines);
//    画一个先
    pains=pains+polylines;
    pains=pains+"/n";
//    开始下一个
    polylines="<v:Polyline style='Z-INDEX:1001;LEFT:"+rxleft+"px;POSITION:absolute;TOP:"+rytop+"px' points='0,0,"+vx+","+vy;
    
   }else if(angdegs[i]==180){
    
    polylines=polylines+","+vx+","+vy+",0,0' fillcolor='"+OVAL_FILLCOLOR_90_180+"' strokeweight='1pt'></v:Polyline>";
//    System.out.println(polylines);
//    画一个先
    pains=pains+polylines;
    pains=pains+"/n";
//    开始下一个
    polylines="<v:Polyline style='Z-INDEX:1001;LEFT:"+rxleft+"px;POSITION:absolute;TOP:"+rytop+"px' points='0,0,"+vx+","+vy;
    
   }else if(angdegs[i]==270){
    
    polylines=polylines+","+vx+","+vy+",0,0' fillcolor='"+OVAL_FILLCOLOR_180_270+"' strokeweight='1pt'></v:Polyline>";
//    System.out.println(polylines);
//    画一个先
    pains=pains+polylines;
    pains=pains+"/n";
//    开始下一个
    polylines="<v:Polyline style='Z-INDEX:1001;LEFT:"+rxleft+"px;POSITION:absolute;TOP:"+rytop+"px' points='0,0,"+vx+","+vy;
    
   }else if(angdegs[i]==360){
    
    polylines=polylines+","+vx+","+vy+",0,0' fillcolor='"+OVAL_FILLCOLOR_270_360+"' strokeweight='1pt'></v:Polyline>";
//    System.out.println(polylines);
//    画一个先
    pains=pains+polylines;
       
   }else{
    polylines=polylines+","+vx+","+vy;
   }

  }

  return pains;
 }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1章4节:VML语言入门 1:VML语言入门 - 极道学法 在我正式开始讲解、你正式开始学习VML语言以前,请务必遵循以下规则,可以达到最佳效果、极道学习方法。 1:如果你学过HTML、CSS或精通HTML、CSS,那么建议你把学VML的过程看做跟学HTML的过程是一样的,因为,根本就是大同小异。 2:从本章节和本章节以后的每一个章节,我会使用最简单、易懂、有效的语言讲解和分析。但这是不够的,重要的是,你一定要活学活用。毕竟就算是神剑,如果握在不会用它的人手中,只会糟蹋了这把剑。活学活用是你未来实战应用、独立开发的关键…… 3:建议学习时,开启Lshdic2005、或Editplus、或其他HTML/VML代码编辑器、甚至是记事本。每学会一个标记,就要综合以前学的标记、新学的标记,练习、写出不同的效果,如此才能加深你对该标记的理解、以后会很好的使用、更重要的是巩固以前所学的标记不至于学新忘旧。有基底的IT精英,可以边学、边分解FlashVml3.0所绘制图型的代码,但对于90%的人,我个人不推荐这么做。勤学勤练、VML语言功底是活学活用VML之基础…… 4:如何达到精通?建议每学一个标记、属性、语句等,以后建议能用键盘默写出来(即记在脑子里,不看例子,能直接写出正确的标记、实现自己需要的效果),只要你肯勤学勤练,这并不困难。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值