当前位置: 代码迷 >> Web前端 >> WEB下动态画图和修改有关问题请问
  详细解决方案

WEB下动态画图和修改有关问题请问

热度:106   发布时间:2012-10-28 09:54:44.0
WEB上动态画图和修改问题请教。
1.需求描述:
  根据DB里的信息:长*宽,在固定半径的圆里尽可能多的画满四边形,并且将所有四边形左下角坐标值存储在数组里。前提条件:将这个图形画到WEB上去,当用户在WEB上点其中一个四边形的时候,可以把这个四边形的背景变成黑色的,并且在对应数组里可以标记这个四边形被用户点成了黑色。如果这个四边形已经是黑色的,那就把这个四边形变成原来的颜色。

2遇到的问题:
  我现在只能用APPLET去实现这些功能(附代码),我的意图是能够用SERVLET在WEB上去动态画图,因为我要用SSH去开发这个系统。
  这里面涉及到四方面的问题:
   A。能够动态在WEB上画图。
   B。当用户在界面上点击任意一个四边形时,可以获取到它的坐标。
   C。根据坐标,在数据中找到相应的四边形,把它的标志置成是黑色的,或是把这个标志去掉。
   D。把数组中点成黑色的四边形存储到DB中去。

请精于此的人不吝赐教啊?

import   java.awt.*;  
  import   java.awt.event.*;  
  import   java.applet.*;  
  import   java.util.Vector;  
  /*<applet   code=Draw.class   width=300   height=300>  
  </applet>*/  
  public   class   Draw   extends   Applet  
  {  
  Panel   radioPanel;  
  drawPanel   dPanel;  
  public   void   init()  
  {  
  dPanel=new   drawPanel();  
  this.setLayout(new   BorderLayout());  
  this.add("Center",dPanel);  
  }  
   
  }  
  class   drawPanel   extends   Panel    
  {  
  int   x1,y1;  
  int   x2,y2;  
  Vector   lines=new   Vector();  
  public   drawPanel()  
  {  
  this.setBackground(Color.orange);  
  this.addMouseListener(new   Mou_Lis());  
  this.addMouseMotionListener(new   MouMotion_Lis());  
  }  
  public   void   paint(Graphics   g)  
  {  
  int   np=lines.size();  
  for(int   i=0;i<np;i++)  
  {  
  Rectangle   p=(Rectangle)lines.elementAt(i);  
  if(p.width!=-1)  
  g.drawRect(p.x,p.y,p.width-p.x,p.height-p.y);  
  }  
  if(x2!=-1)  
  g.drawRect(x1,y1,x2-x1,y2-y1);  
   
  }  
  private   class   Mou_Lis   extends   MouseAdapter  
  {  
  public   void   mousePressed(MouseEvent   e)  
  {  
   
  x1=e.getX();  
  y1=e.getY();  
  x2=-1;  
   
  }  
                  public   void   mouseReleased(MouseEvent   e)  
                  {  
                   
   
  x2=e.getX();  
  y2=e.getY();  
  lines.addElement(new   Rectangle(x1,y1,x2,y2));  
  x2=-1;  
  repaint();  
   
   
                  }  
                 
          }  
          private   class   MouMotion_Lis   extends   MouseMotionAdapter  
          {  
          public   void   mouseDragged(MouseEvent   e)  
                  {  
                   
  x2=e.getX();  
  y2=e.getY();  
  repaint();  
   
                  }  
                   
          }  
  }
1 楼 gjp00115 2009-11-09  
注:
附件里是我用APPLET实现的效果图。
现在我的想法是能在WEB上去实现这个效果。
谢谢。
2 楼 flyliying 2009-11-10  
可以试试jfreechart
3 楼 yye_javaeye 2009-11-10  
a:页面端img的src为某个action,该action画图,并输出图像的stream
b:如果实在不想用applet,可以使用图片的热点,热点数据由你从画图时产生的数据动态生成
c:如果你画的四边形已经在数据库里存在的话,甚至可以不传坐标,直接传递四边形id到后台action就行
图片的刷新可以把图片丢到个小的iframe中,这样用户感觉就比较好了

4 楼 presses 2009-11-10  
用flex做,好像挺快。
5 楼 gjp00115 2009-11-10  
十分感谢大家的热心回复。
大家有什么这方面的资料或者DEMO吗?
感谢大家。
6 楼 bill.end 2009-11-11  
前几天做的,也许有帮助
7 楼 EldonReturn 2009-11-11  
applet是不是太笨重了呢?
用js在页面上画,结束了传个xml格式的数据回去不就行了
8 楼 gjp00115 2009-11-11  
谢谢大家的热心。
我现在正在研究这几种方式:
1.Flex
2.JfreeChart.
3.SVG
4.VML

大家有什么好的建议,还请不吝赐教啊。。
谢谢。
  相关解决方案