CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

如何在应用程序中画简单图形?

楼主yangl79(杨)2004-05-03 20:51:22 在 Java / J2SE / 基础类 提问

我是指在应用程序中,不是在applet中!比如说画个矩形。  
  另外还问一个问题,如果上面的问题解决了的话,我想问,我如何才能把上面我所画的图形存成jpg图形放在硬盘里?  
  谢谢! 问题点数:50、回复次数:8Top

1 楼yangl79(杨)回复于 2004-05-03 20:51:52 得分 0

请介绍一些相关的类,谢谢。Top

2 楼yangl79(杨)回复于 2004-05-05 19:05:23 得分 0

我这个问题这么没水平吗?Top

3 楼listening(zqy)回复于 2004-05-05 19:33:11 得分 50

<%@   page   contentType="text/html;   charset=GBK"   %>  
   
  <%@page   import="java.io.*"%>  
  <%@page   import="javax.servlet.*"%>  
  <%@page   import="javax.servlet.http.*"%>  
   
  <%@page   import="java.awt.*"%>  
  <%@page   import="java.awt.image.*"%>  
  <%@page   import="java.awt.geom.*"%>  
  <%@page   import="com.sun.image.codec.jpeg.*"%>  
   
  <html>  
  <head>  
  <title>  
  Draw  
  </title>  
  </head>  
  <body   bgcolor="#ffffff">  
  <%  
      int   WIDTH=500;  
      int   HEIGHT=600;  
   
      try   {  
              response.setContentType("image/jpeg");  
   
              ServletOutputStream   out1   =   response.getOutputStream();  
   
              //   create   a   proper   size   Frame   object  
              BufferedImage   image   =   new   BufferedImage(WIDTH,   HEIGHT,   BufferedImage.TYPE_INT_RGB);  
   
              Graphics2D   g2   =   image.createGraphics();  
   
              //   draw   the   graph   onto   the   image  
              g2.setColor(Color.white);  
              g2.fillRect(0,0,WIDTH,HEIGHT);  
              g2.setColor(Color.red);  
              g2.drawRect(0,0,WIDTH-1,HEIGHT-1);  
   
              float   x,y;  
              double   a;  
   
              g2.setColor(Color.red);  
   
              g2.translate(200,200);  
              GeneralPath   path=new   GeneralPath();  
   
              for(x=-180;x<=180;x+=1)  
              {  
              a=Math.sin(x*Math.   PI/180);  
              y=(float)(40*a);  
              if(x==-180)  
                  path.moveTo(x,y);  
              else  
                  path.lineTo(x,y);  
              }  
   
              g2.draw(path);  
   
              g2.setColor(Color.blue);  
              g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);  
   
   
   
              GeneralPath   path2=new   GeneralPath();  
   
              for(x=-180;x<=180;x+=1)  
              {  
              a=Math.sin(x*Math.   PI/180);  
              y=(float)(40*a);  
              if(x==-180)  
                  path2.moveTo(x,y);  
              else  
                  path2.lineTo(x,y);  
              }  
   
   
              float[]   dashPattern=   {   10,   10,   10,   10,   10,   10,   30,   10,   30};  
              BasicStroke   stroke=new   BasicStroke(10.0f,BasicStroke.CAP_BUTT,  
        BasicStroke.JOIN_MITER,   10.0F   /*   miter   limit   */,  
        dashPattern,   0   /*   dash   phase   */  
  );  
              g2.setStroke(stroke);  
   
              g2.rotate(-Math.PI/2);  
              g2.draw(path2);  
              g2.rotate(Math.PI/2);  
              g2.draw(path);  
   
              g2.drawString("This   is   the   Test!",100,100);  
   
              g2.rotate(-Math.PI/2,100,100);  
              g2.drawString("This   is   the   Test!",100,100);  
              g2.rotate(Math.PI/2,100,100);  
   
              /*  
              File   f=new   File("E:\\MyProject\\Java\\jbproject\\Standard\\test.jpg");  
              BufferedImage   image1   =   javax.imageio.ImageIO.read(f);  
              g2.drawImage(image1,null,0,0);  
   
              int   rule   =   AlphaComposite.SRC_OVER;  
              float   alpha   =   0.5f;  
              g2.setComposite(AlphaComposite.getInstance(rule,   alpha));  
   
              File   f2=new   File("E:\\MyProject\\Java\\jbproject\\Standard\\test2.jpg");  
              BufferedImage   image2   =   javax.imageio.ImageIO.read(f2);  
              g2.drawImage(image2,null,0,0);  
              */  
              //   encode   the   output   back   to   the   client  
              JPEGImageEncoder   encoder   =   JPEGCodec.createJPEGEncoder(out1);  
              encoder.encode(image);  
              out1.flush();  
   
          }   catch   (Exception   e)   {  
              e.printStackTrace();  
          }  
   
      %>  
   
  </body>  
  </html>  
  Top

4 楼listening(zqy)回复于 2004-05-05 19:34:11 得分 0

我的一个测试的例子,没修改就放上了。原理很简单。Top

5 楼panpan221(我是来学习的!)回复于 2004-05-05 20:36:30 得分 0

新手学习,关注Top

6 楼yangl79(杨)回复于 2004-05-05 21:29:39 得分 0

我运行怎么没有结果啊,在哪运行?Top

7 楼sensitive(左右为难)回复于 2004-05-05 21:50:38 得分 0

相关的类,  
  java.awt.Graphics;  
  java.awt.Graphics2D;  
  java.awt.Geom.*;(里面都是2D图形类,包括矩形,直线,多边形,椭圆等)  
   
  先建一个JFrame和JPanel,在JPanel里面重载paint()   或者paintComponent()方法,再调用Graphics2D的draw(Shape   s)应该就可以画了,具体实现不难,很多书上都有啊,想Core   java  
  卷1,2   至于生成jpg,忘了,查查书再说吧,偶是新手。Top

8 楼listening(zqy)回复于 2004-05-05 22:45:01 得分 0

这是一个JSP文件,我在JBuilder里面调试通过了。你慢慢研究研究。  
  可以把中间对Graphics的很多操作删除掉,那些有的是画正弦函数和字符串旋转灯的操作,没有用的。  
   
  原理就是生成Jpg文件,然后传到客户端。Top

相关问题

  • 最简单的ASP.NET应用程序
  • 请教一个简单的小应用程序怎么制作
  • 多文档界面 (MDI) 应用程序的简单问题
  • 关于windows应用程序部署的简单问题
  • 简单的C#应用程序需要什么样的环境?
  • 新手上路,全是简单问题(windows应用程序)
  • 哪有比较简单的单文档应用程序例子
  • 如何在一个应用程序中改变另一个应用程序的窗口类的背景画刷?
  • 如何在ASP中执行有图形界面的应用程序
  • flash动画如何加载到vb应用程序中

关键词

得分解答快速导航

  • 帖主:yangl79
  • listening

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...

社区焦点:

教你怎样用C#搞笑整人
最懒惰的程序员写的Cache
程序员如何掌握专业英语
Java栈与堆
分享:让人懊恼的面试
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo