import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class Test { public static void main(String []args){ Test.pressFive("d:/generImage.png", 1, 0, 0, 0, 0); } /** * 生成五边形用的函数 * @param dstImg,输出图片文件名称 * @param v1,有效值为0-4 * @param v2,有效值为0-4 * @param v3,有效值为0-4 * @param v4,有效值为0-4 * @param v5,有效值为0-4 */ public final static void pressFive(String dstImg,int v1,int v2,int v3,int v4,int v5) { try { int picWidth=600,picHeight=600; BufferedImage bufferedImage = new BufferedImage(picWidth, picHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g = bufferedImage.createGraphics(); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1.0f)); //填充背景 g.setColor(new Color(255,255,255)); g.fillRect(0, 0, picWidth, picHeight); int min = 90,deta=20,mark=50; int [][]p1 = new int[5][2]; for(int i=0; i<5; i++){ p1[i][0]=picWidth/2; p1[i][1]=picHeight/2-min-deta*i; } int [][]px = new int[5][5]; //一维:五个角中的那个角,二维:从里到外0-4 int [][]py = new int[5][5]; double angle=0.0; //计算五个五边形的顶点。 for(int i=0; i<5; i++){ angle = 72*Math.PI*i/180; for(int j=0; j<5; j++){ px[i][j]=(int) Math.round(picWidth/2+(min+deta*j)*Math.sin(angle)); py[i][j]=(int) Math.round(picHeight/2-(min+deta*j)*Math.cos(angle)); } } //绘制五个五边形 g.setColor(new Color(128,128,128)); for(int i=0; i<5; i++){ g.drawPolygon(new int[]{px[0][i],px[1][i],px[2][i],px[3][i],px[4][i]}, new int[]{py[0][i],py[1][i],py[2][i],py[3][i],py[4][i]}, 5); } //绘制根据指定的顶点序号,绘制五边形 g.setColor(new Color(0,204,255)); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f)); g.fillPolygon(new int[]{px[0][v1],px[1][v2],px[2][v3],px[3][v4],px[4][v5]}, new int[]{py[0][v1],py[1][v2],py[2][v3],py[3][v4],py[4][v5]}, 5); //输出文字 g.setColor(new Color(16,16,16)); int fontsize=12; g.setFont(new Font("黑体",Font.PLAIN,fontsize)); String [] text = {"金","木","水","火","土"}; g.drawString(text[0]+"/"+(v1)*mark, px[0][4],py[0][4]-fontsize); g.drawString(text[1]+"/"+(v2)*mark, px[1][4],py[1][4]); g.drawString(text[2]+"/"+(v3)*mark, px[2][4],py[2][4]+fontsize); g.drawString(text[3]+"/"+(v4)*mark, px[3][4]-fontsize*7,py[3][4]); g.drawString(text[4]+"/"+(v5)*mark, px[4][4]-fontsize*7,py[4][4]); g.dispose(); //保存图片 ImageIO.write(bufferedImage, "JPG", new File(dstImg)); } catch (IOException e) { e.printStackTrace(); } } }
相关推荐
Graphics2D是Java 2D API的核心类,用于在Java平台上进行复杂的二维图形绘制。它扩展了基础的Graphics类,提供了更多的特性,如几何形状的绘制、坐标转换、颜色管理以及文本布局。在Java中,如果你需要生成验证码、...
1. `Graphics2D` 类:这是Java 2D绘图的核心类,继承自`Graphics`,扩展了更多的二维图形操作功能。通过`Graphics2D`对象,你可以绘制各种几何形状(如矩形、椭圆、线条)、路径、文本和图像。 2. `Shape` 接口:...
在`Graphics2D`中,还可以设置画笔的颜色、线型、填充模式、抗锯齿效果等属性,以实现更细腻的视觉效果。例如: ```java g2d.setColor(Color.BLUE); g2d.setStroke(new BasicStroke(5)); g2d.setRenderingHint...
`Graphics2D`类是这个概念的具体实现,它扩展了`Graphics`类,提供了更多的功能,如精确的线宽控制、平移、旋转、缩放、抗锯齿、渐变填充等。 1. **基本绘图对象**:在Java 2D中,你可以绘制线条、矩形、椭圆、圆、...
Java中的图形绘制主要依赖于`java.awt`和`javax.swing`这两个包,特别是`Graphics2D`类,它是`Graphics`类的扩展,提供了更多高级绘图特性,如画笔颜色、线型、填充模式等。在`LineDemo.java`这个示例中,我们很可能...
在Java中,我们通常使用Graphics2D类来绘制图形。它提供了各种方法,如drawLine(), drawRect(), fillOval()等,用于绘制线条、形状和填充。在多功能画笔中,用户可能可以绘制直线、曲线、矩形、圆形等,同时支持...
以下是一些关于Java `Graphics2D`和画笔粗细的重要知识点: 1. **创建Graphics2D对象**:在Java中,我们通常从`Component`类的`paintComponent(Graphics g)`方法中获取`Graphics`对象。然后,我们可以将`Graphics`...
在本Java课程设计中,我们将探讨如何创建一个具备基本绘图功能的程序,包括画笔、直线、圆形和矩形的绘制,同时提供调整画笔大小、颜色以及使用橡皮擦和清空画布的选项。这个项目不仅锻炼了开发者在图形用户界面...
本项目是使用Java的Graphics2D库进行可视化的A*算法实现,让我们来详细探讨这个主题。 首先,Java Graphics2D是Java 2D API的一部分,用于创建和渲染二维图形、文本和图像。它提供了一系列方法,如绘制线、形状、...
在Java中,Graphics2D是AWT中的核心类,用于处理二维图形。它扩展了Graphics类,提供了更多的方法来绘制复杂的形状、线条、文本和图像。Graphics2D支持矢量图形,这意味着无论放大多少倍,图形都能保持清晰。以下是...
在Java中,`java.awt.Graphics2D`类提供了强大的功能,可以实现各种复杂的纹理填充效果,包括但不限于简单的平铺、旋转、缩放、透明度控制等。此外,还可以结合Java的多线程和动画框架,创建动态的纹理填充特效,如...
java给圆角矩形外线条加粗Demo,主要代码: @Override ... Graphics2D g2d=(Graphics2D)g; g2d.setStroke(stroke); g2d.setColor(Color.BLUE); g2d.drawRoundRect(10, 10, 200, 80, 20, 20); }
`java.awt.Graphics2D`是Java 2D绘图的主要类,它提供了绘制二维图形的方法。`javax.swing`中的`JFrame`和`JPanel`则用于创建窗口和面板,承载我们的图形。 1. **创建绘图窗口** 首先,我们创建一个`JFrame`作为主...
- **Graphics2D对象**:它是Java 2D API的核心,用于在图形上下文中执行绘图操作。你可以通过`Graphics2D`类的实例来实现复杂的绘图任务。 - **坐标系统**:Java 2D使用笛卡尔坐标系统,原点默认位于窗口的左上角...
3. **`Graphics`与`Graphics2D`绘图**:学习如何获取`Graphics2D`对象,设置画笔颜色、线型、填充规则,绘制基本形状(如线、矩形、椭圆),以及如何绘制自定义路径和曲线。 4. **文字渲染**:学习如何使用`...
总结来说,这个Java画图程序充分利用了Java Swing库和`Graphics2D`类来提供一个交互式的图形绘制环境。它展示了如何在Java中实现图形用户界面、图形绘制、颜色选择、文件操作以及用户交互,为初学者提供了一个很好的...
在这个"AndroidGraphics2D-master"压缩包中,很可能包含了关于如何在Android应用中进行2D图形编程的示例代码和教程。 在Android 2D绘图中,核心组件是`Canvas`和`Paint`。`Canvas`可以视为画布,开发者在其上进行...
Java Graphics2D是Java 2D API的一部分,用于在二维空间中进行绘图。在绘图板中,Graphics2D对象用于绘制线条、曲线、矩形、圆形等基本图形,以及添加文字和设置画笔属性(如颜色、线宽)。 3. **事件监听**: ...
3. **绘图API**:Java提供了`Graphics2D`类,它是`Graphics`类的子类,用于在组件上进行高级绘图操作,如线条绘制、填充形状、文本渲染等。在本项目中,开发者可能使用了`Graphics2D`的`drawLine()`, `drawRect()`, ...
- JavaFX的`GraphicsContext`或Swing的`Graphics2D`接口提供了基本的绘图操作,如画线、画圆、填充形状等。它们都是基于Java的`Graphics`类进行扩展的,可以实现复杂的图形绘制。 6. **状态管理**: 为了保持画图...