- 浏览: 145004 次
- 性别:
- 来自: 洛阳
文章分类
最新评论
-
widiots:
遇上你这种代码,StringBuilder 比窦娥还冤。你这测 ...
java 字符串拼接方法性能大比拼 -
Velly_zheng:
大神,666 !请问有没有上百万数据往指定模板中写数据的代 ...
使用POI读取100万行excel -
xiongshunli:
大神,请问下如何从table中取这些数据呢,这只是存起来,不去 ...
使用POI读取100万行excel -
g_man1990:
1和2应该是差不多的,还有append("[&quo ...
java 字符串拼接方法性能大比拼 -
sp42:
应该用java7自动关闭资源啦
我的新的开源项目happyhttp上线了
1. 环境
JDK1.6
2.代码
package tmp.j2d; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; import java.awt.geom.Rectangle2D; import javax.swing.JPanel; import com.yuan.common.swing.Circle; public class AreaPanel extends JPanel { private static final long serialVersionUID = 1L; public AreaPanel(){ super(); super.setPreferredSize(new Dimension(600, 600)); } public void paintComponent(Graphics g){ super.paintComponents(g); Graphics2D g2 = (Graphics2D)g; Shape s1 = new Ellipse2D.Double(100, 100, 400, 400); Shape s2 = new Ellipse2D.Double(200, 100, 200, 200); Shape s3 = new Ellipse2D.Double(200, 300, 200, 200); Shape leftRect = new Rectangle2D.Double(100, 100, 200, 400); Shape rightRect = new Rectangle2D.Double(300, 100, 200, 400); Area a2 = new Area(s2); Area a3 = new Area(s3); Area leftRectArea = new Area(leftRect); Area rightRectArea = new Area(rightRect); Area leftCircleArea = new Area(s1); leftCircleArea.subtract(rightRectArea); leftCircleArea.add(a2);//radius leftCircleArea.subtract(a3); Area rightCircleArea = new Area(s1); rightCircleArea.subtract(leftRectArea); rightCircleArea.subtract(a2); rightCircleArea.add(a3); g2.setColor(Color.white); g2.fill(leftCircleArea); g2.setColor(Color.black); g2.fill(rightCircleArea); g2.fill(new Circle(300, 200, 10)); g2.setColor(Color.white); g2.fill(new Circle(300, 400, 10)); } }
package com.yuan.common.swing; import java.awt.geom.*; public class Circle extends Ellipse2D.Double { private static final long serialVersionUID = 1L; protected double cx; protected double cy; protected double radius; public Circle(double cx, double cy, double radius){ super(cx - radius, cy - radius, 2*radius, 2*radius); this.cx = cx; this.cy = cy; this.radius = radius; } public double getCx() { return cx; } public double getCy() { return cy; } public double getRadius() { return radius; } }
3.测试
package tmp.j2d; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; public class ImageFrame extends JFrame { private static final long serialVersionUID = 1L; public ImageFrame(String title){ super(); this.setTitle(title); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //必须,否则内存泄露 } /** * 设置窗口图标, 可以是png,gif等 * @param iconFile String */ public void setIcon(String iconFile){ try { super.setIconImage(ImageIO.read(new File(iconFile))); } catch (IOException e) { e.printStackTrace(); } } public void fullScreen(){ GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = ge.getDefaultScreenDevice(); if ( gd.isFullScreenSupported() ){ gd.setFullScreenWindow(this); } if (gd.isDisplayChangeSupported()) { // gd.setDisplayMode(new DisplayMode(800, 600, DisplayMode.BIT_DEPTH_MULTI, 60)); } } private void center(){ double screenWidth = Toolkit.getDefaultToolkit().getScreenSize().getWidth(); double screenHeight = Toolkit.getDefaultToolkit().getScreenSize().getHeight(); this.setLocation((int) (screenWidth - this.getWidth()) / 2, (int) (screenHeight - this.getHeight()) / 2); // new Robot().createScreenCapture(new Rectangle(0, 0, (int)screenWidth, (int)screenHeight)); } private void renderToScreen(){ // fullScreen(); this.pack(); center(); this.setVisible(true); } public void showImage(BufferedImage bufferedImage){ this.getContentPane().add(new ImagePanel(bufferedImage)); renderToScreen(); } public void showPanel(JPanel panel){ this.getContentPane().add(panel); renderToScreen(); } public void showComponent(Component comp){ this.getContentPane().add(comp); renderToScreen(); } } class ImagePanel extends JPanel{ private static final long serialVersionUID = 1L; private BufferedImage bufferedImage; public ImagePanel(BufferedImage bufferedImage){ this.bufferedImage = bufferedImage; //设置组件首选大小 this.setPreferredSize(new Dimension(bufferedImage.getWidth(), bufferedImage.getHeight())); } public void paintComponent(Graphics g){ super.paintComponents(g); Graphics2D g2d = (Graphics2D)g; g2d.drawImage(bufferedImage, 0, 0, null); } }
public static void main(String[] args) throws Exception{ EventQueue.invokeLater(new Runnable() { public void run() { ImageFrame imageFrame = new ImageFrame("Java2D 演示"); imageFrame.showPanel(new AreaPanel()); } }); }
运行效果:
发表评论
-
netty vs jetty
2017-03-23 20:44 2036对比版本netty4.1 , jetty9.3 1. ... -
新的开源项目happyxml
2016-11-30 02:21 507happyxml 项目地址:https://github ... -
新的开源项目happyjdbc
2016-11-27 23:18 494happyjdbc 项目地址:https://githu ... -
protobuf通信消息设计技巧备忘
2016-11-14 02:12 22741. 有一个全局的ProtobufMessage, 所有的r ... -
appsecret与accessToken生成
2016-11-13 11:14 4083apache oltu: acce ... -
使用POI读取100万行excel
2016-07-01 18:21 12170poi 的usermodel api读取大数据量excel ... -
Protostuff序列化与反序列化
2016-02-23 00:42 2524发现一个好东西Protostuff, 据说可以不写prot ... -
java 字符串拼接方法性能大比拼
2015-11-24 11:11 2717由于在实际项目中经常会打log,这 就要用到字符串拼接, 本 ... -
msgpack序列化与反序列化
2015-06-20 15:32 9589最近想找个二进制序列化框架把对象存起来或者放到缓存里,首先排 ... -
Runtime.exec 执行管道重定向与大文件合并命令
2014-12-26 11:49 1590要执行包含管道重定向与大文件合并的外部命令,需要注意以下 ... -
Java匹配无限嵌套的括号
2014-12-26 10:59 2246在Java中单纯依靠正则表达式是无法匹配无限嵌套的括号 ... -
UDP 多播
2013-09-25 09:57 883package tmp.net.socket.udp; ... -
netty udp编程
2013-09-23 22:02 7804package tmp.net.netty.udp; ... -
swing版按键控制台
2013-05-09 09:59 1804最近找到一个unity3d游戏《地铁跑酷pc版》非常好 ... -
一个基于RMI的小巧好用的框架(三)
2012-12-12 10:13 1121在Java RMI中Registry对象表示远程对象注册表。 ... -
一个基于RMI的小巧好用的框架(二)
2012-12-11 10:18 1231RMI有注册端口和通信端口。 通过以下代码设置的是注册 ... -
一个基于RMI的小巧好用的框架
2012-12-11 09:51 4064最近有用到rmi技术,需要实现Remote接口,需要抛出Rem ... -
JDBC访问Access2007
2012-12-10 12:01 3040JDBC访问Access2007关键就一句: "j ... -
生成随机密码
2011-07-13 14:39 1320分享一个生成随机密码的工具类, 可以控制生成的密码长度, 密码 ... -
我的开源项目
2011-04-14 17:11 1468happyxml 项目地址:https://github ...
相关推荐
在C++编程中,我们可以利用MFC(Microsoft Foundation Classes)框架来实现图形界面的应用程序,这里我们关注的是如何使用MFC来绘制太极图。太极图由两个相反颜色的半圆组成,中间通过两个小圆来形成阴阳鱼眼,整体...
"太极图的二维方程描述方法" 太极图是一种古典的中国象征符号,表示宇宙的平衡和对立统一。太极图的二维方程描述方法是将太极图转化为数学方程式,以便更好地理解和分析太极图的结构和特征。 在太极图的二维方程...
【太极图VB源代码】是基于Visual Basic(VB)编程语言实现的一个图形程序,它能够绘制出具有中国传统哲学象征意义的太极图案。VB是一种面向对象的编程语言,由微软公司开发,广泛应用于Windows平台上的应用软件开发...
3. 绘制曲线:太极图中间的S型曲线可以通过多段直线或贝塞尔曲线(`quadraticCurveTo()`或`bezierCurveTo()`)来实现,这些方法可以创建平滑的曲线路径。 4. 动画效果:为了让太极图看起来更生动,可能还添加了动画...
本篇将详细探讨如何使用C#结合GDI+实现一个动态的太极图。 首先,我们要理解太极图的基本构成,它通常由黑白两部分组成,代表着阴阳哲学,中间有一条曲线分隔,两边各有一个小圆。在编程中,我们可以通过定义图形的...
这就是个用OpenGL实现的太极图没有什么的了就是画几个圆
在这个特定的项目中,我们关注的是利用Microsoft Foundation Classes (MFC)库在C++环境中实现太极图的绘制。MFC是微软为Windows应用程序开发提供的一套类库,它基于面向对象编程,简化了Windows API的使用。 太极图...
适合新学的,练习 java swing画图,利用 BufferedImage 类 ,通过fillArc函数实现太极图绘制。I
为了实现动画效果,开发者可能会在自定义View的onDraw()方法中加入时间和状态的判断,动态调整Path的形状,例如改变圆的大小、位置或旋转角度,从而实现太极图的动态流动效果。 文件`OpView.java`很可能是这个...
本项目中的"自定义view实现太极图、时钟"是一个很好的示例,它利用了Canvas对象来绘制复杂的图形,同时结合系统时间进行动态更新。接下来,我们将详细探讨这两个自定义View的实现原理和关键知识点。 首先,我们来看...
在C#编程环境中,利用`System.Drawing`命名空间可以实现图形绘制,包括绘制复杂的太极图。太极图,作为中国传统文化的象征,由黑白两色的鱼形图案组成,中间以一条S形曲线分隔,代表着阴阳哲学。下面将详细介绍如何...
C语言最基本的画图,实现了画出一个太极图
使用matlab实现图形的旋转--旋转的太极图
在本案例中,"ActionScript 画太极图案"是一个练习,旨在教授如何利用ActionScript进行图形绘制,特别是对太极图案这种具有复杂对称性的图形的编程实现。 首先,我们要理解太极图案的基本结构。太极图由黑白两个...
在太极图的例子中,可能需要利用伪元素创建太极图的黑白两半部分,或者添加太极图的中心分界线。 使用伪元素的语法如下: ```css selector::before { content: "your content"; /* other styles */ } ``` 2...
这个程序的开发者利用JAVA的图形用户界面(GUI)库,如JavaFX或Swing,创建了一个可以显示太极图的应用。在JAVA中,图形的生成通常涉及对像素的精确控制,通过画布(Canvas)类或者组件(Component)类来实现。 ...
详细讲解用scratch绘制太极图,主要要点是绘制实心半圆。
flash as3.0 旋转太极图
呵呵昨天花了一个圆,想画个太极图,我知道没啥技术含量,但是挺有意思的,希望各位看官不要鄙视我不务正业,画完此图,不再做这些事情。 先展示下画出来的图像的情况,因为不支持pgm格式的图像,所以我用的 QQ...
太极图psd,可以依照这个来用PS坐一个太极图。可以依照这个来用PS坐一个太极图。