其效果如下图:
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
public class BufferedImageTest extends Applet
{
private static final long serialVersionUID = 1L;
//一个BufferedImage,还有它的宽和高
private BufferedImage image;
private final int BI_WIDTH = 100;
private final int BI_HEIGHT = 100;
//用来生成随机颜色和屏幕位置
private java.util.Random random;
public void init()
{
random = new java.util.Random();
//创建一个(BI_WIDTH*BI_HEIGHT)的缓冲图像
image = new BufferedImage(BI_WIDTH, BI_HEIGHT,
BufferedImage.TYPE_INT_BGR);
//为BufferedImage创建一个Graphics2D容器。记住,它和Applet的
//Graphics2D没有什么关系
Graphics2D bi_g2d = image.createGraphics();
//我们将在BufferedImage上绘制一些条纹
//条纹的宽和高分别是图像宽和高的十分之一
final int stripWidth = BI_WIDTH / 10;
final int stripHeight = BI_HEIGHT / 10;
//用随机颜色绘制垂直的条纹
bi_g2d.setPaint(new Color(random.nextInt()));
int x = stripWidth / 2;
while (x < BI_WIDTH)
{
bi_g2d.fill(new Rectangle(x, 0, stripWidth, BI_HEIGHT));
x += 2 * stripWidth;
}
//给条纹设置一个透明通道
bi_g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
0.7f));
//使用随机颜色绘制水平的条纹
bi_g2d.setPaint(new Color(random.nextInt()));
int y = stripHeight / 2;
while (y < BI_HEIGHT)
{
bi_g2d.fill(new Rectangle(0, y, BI_WIDTH, stripHeight));
y += 2 * stripHeight;
}
//在图像的周围呈现一个深色不透明的外框
bi_g2d.setStroke(new BasicStroke(2.0f));
bi_g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
bi_g2d.setPaint(Color.black);
bi_g2d.draw(new Rectangle(0, 0, BI_WIDTH, BI_HEIGHT));
}
public void paint(Graphics g)
{
//将g转换,以获得一个可用的Graphics2D对象
Graphics2D g2d = (Graphics2D) g;
//在随机的位置上画一串图像
for (int i = 0; i < 20; i++)
{
g2d.drawImage(image, AffineTransform.getTranslateInstance(random.nextInt()% getSize().getWidth(), random.nextInt()% getSize().getHeight()), this);
}
}
}
- 大小: 4.6 KB
分享到:
相关推荐
- 不平滑表面(Bump Mapping)是实现光照效果的一种技术,它通过改变表面纹理的法线来模拟表面的微小不规则,使原本平坦的表面看起来有凹凸感,进而影响光照的反射和阴影。 3. **光源滤镜**: - 光源滤镜可以...
然而,`Graphics`对象也有一些限制,比如不能绘制复杂图形、虚线、宽度可变的线条,也不能使用纹理或渐变色填充。 2. **Graphics图形类**: `Graphics`类是所有图形上下文的抽象基类,它允许在组件和离屏图像上...
它不支持原始图形以外的高级图形绘制,比如无法绘制虚线或宽度可变的线条,也不能填充纹理或渐变色。这意味着如果需要更复杂的图形效果,可能需要使用其他库,如Java2D或者第三方图形库。 接下来,教程会介绍Java的...
在图像处理中,这种技术可以用于创建无缝纹理或在低内存设备上处理大型图像。 7. `HistToGrub.java` - 可能是一个将图像直方图转换为灰度图像的程序。直方图均衡化是改善图像对比度的一种常见方法,通过调整像素值...
文档中提到了Java2D API中的绘制技术,例如绘制基本形状(Rectangle、Ellipse)、渐变填充(GradientPaint)、纹理填充(TexturePaint)、颜色转换(Color)、仿射变换(AffineTransform)等。仿射变换特别重要,它...
学习Java 3D,你需要理解基本的3D概念,如坐标系统、向量、矩阵、几何对象、光照和纹理等。此外,还要熟悉Java 3D API的使用,包括Scene Graph的构建和渲染。 5. **事件处理和定时器**: 在创建动画时,事件处理和...
- **线框图绘制**: 通过绘制线框图来构建人物形状。 - **汽车建模**: - **基本构造**: 提供构建汽车模型的基础步骤。 #### 总结 Java3D为开发者提供了强大的工具集来构建复杂的3D应用程序。无论是对于希望创建...
import java.applet.Applet; public class SimpleAWTExample extends Applet { public void paint(Graphics g) { g.drawString("Hello, AWT!", 50, 50); } } ``` ##### Swing 示例 ```java import javax.swing....
`TextureChooser.java`可能是用于选择和管理纹理的类,Java2D支持纹理映射,可以将图像应用到几何形状上,提供丰富的视觉效果。 `Java2DemoApplet.java`表明这个程序也支持作为Web应用运行,它是Java Applet的形式...
而在处理具有复杂纹理和颜色变化的图像时,则可能需要更高级的算法,如基于区域生长或基于深度学习的方法。 此外,为了提高图像分割的效率和准确性,还可以采取以下策略进行优化: - 对原始图像进行预处理,比如...
VTK数据通常存储在如.vtk或.vtp等特定格式的文件中,这些文件包含了关于几何形状、颜色、纹理等信息。在`vtkImporter.java`中,我们可能会看到如下步骤: 1. 导入必要的VTK库:首先,你需要引入VTK的Java库,例如`...
给定的代码示例展示了一个简单的Java Applet,它使用AWT的`Graphics`类来绘制一个矩形。然而,如果我们要使用OpenGL,代码将显著不同,因为OpenGL提供了更高级的图形渲染能力,包括纹理映射、光照效果等。 #### ...
包括字体设置和纹理管理,可以通过`Graphics2D`类等进行高级图形绘制,例如线、形状、文本等。 4. 计算机动画:Java提供了一系列的机制来实现动态图形,如帧管理和定时器,使得开发者能够创建流畅的动画效果。通常...
JAI 是一套面向对象的接口集合,它支持一种简单而高级的编程模型,允许开发者在 Java 应用程序和 Applet 中轻松地操作图像。 - **主要特性:** - **高性能和平台独立性:** JAI 提供了一个高性能的、跨平台的可...
- **start()**:在用户回到包含Applet的页面时调用。 - **stop()**:在线程结束前调用,释放资源。 #### 五、游戏动画与绘图 - **动画播放**: ```plaintext while (!进程) { // 绘制当前帧 // 暂停特定时间...
10. **集成Web应用**:Java 3D可以嵌入到Java Applet或Java Web Start应用中,使得3D内容可以在浏览器上展示。 总的来说,“SimpleTexture.java”可能是实现了一个简单的3D场景,演示了如何加载纹理并将其应用到...
实例6 在窗口中显示背景图 16 实例7 在窗体中绘制图形 18 实例8 利用JNI实现窗口特效 20 实例9 文件选择对话框 24 实例10 改变字体 26 实例11 应用JTree 28 实例12 应用JTable 30 实例13 记事本 32 实例14 使用...