易截截图软件、单文件、免安装、纯绿色、仅160KB

Java编写图形学的种子填充算法

用C写的图形学填充算法已经很多了,看到不少帖子都是在问关于如何用Java编写图形学的填充算法,说来也巧,我刚好要做一个这个方面的实验,用的是扫描线种子填充算法,由于时间仓促,代码质量可能不算很高,希望大家见谅,并希望大家都来为我指点一下,小弟不胜感激~~
好了,废话就不说了,我们先一起来看一下相关的知识~
扫描线种子填充算法思想
  首先填充种子所在的尚未填充的一区段,然后确定与这一区段相邻的上下两条扫描线上位于该区段内是否存在需要填充的新区段,如果存在,则依次把每个新区段最右端的象素作为种子放入堆栈。反复这个过程,直到堆栈为空。
 扫描线种子填充算法步骤
  1、初始化堆栈。
  2、种子压入堆栈。
  3、While(堆栈非空)从堆栈弹出种子象素。
  {
   (1)如果种子象素尚未填充,则:
    ① 求出种子区段:xleft、xright。
    ② 填充整个区段。
   (2)检查相邻的上扫描线的xleft ≤ x ≤ xright区间内,是否存在需要填充的新区段,如果存在,则把每个新区段在xleft ≤ x ≤ xright范围内的最右边的象素,作为新的种子象素依次压入堆栈。
  (3)检查相邻的下扫描线的xleft≤x≤xright区间内,是否存在需要填充的新区段,如果存在,则把每个新区段在xleft≤x≤xright范围内的最右边的象素,作为新的种子象素依次压入堆栈。
  }
以上是一些相关的知识提要,接下来是一份算法的Java代码:
包括两个类:
package com.tony.view;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.util.Vector;
import javax.swing.JPanel;
public class DrawComponentPanel extends JPanel {
private int[] xPoints = new int[4];
private int[] yPoints = new int[4];
private Color fillColor;
private Color curColor;
private boolean fill = false;
public DrawComponentPanel() {
xPoints[0] = 0;
xPoints[1] = 0;
xPoints[2] = 0;
xPoints[3] = 0;
yPoints[0] = 0;
yPoints[1] = 0;
yPoints[2] = 0;
yPoints[3] = 0;
}
protected void paintComponent(final Graphics g) {
super.paintComponent(g);
Robot robot = null;
Point p;
try {
robot = new Robot();
} catch (


相关文档:

[最著名]的国外Java网站

这几天,在网上搜了很多关于java的东西,现在给大家总结一下,非常有用哦,很多东西我们在国内是无法了解到的
java程序员必去的国外网站
http://www.onjava.com
每周都有新文章发表
http://www.developer.com/java
由Gamelan.com 维护的Java技术文章网站
http://www.java.net
Sun公司维护的一个Java社区网站
http:/ ......

java开发中的虚拟机内存问题

          最近运行程序,老是遇到内存溢出的问题,Out of Memory(系统内存不足)的异常。仔细查资料,好好学习了一下虚拟机的几只,才知道,这是因为Java虚拟机默认分配的内存只有64M,如果应用的比较大,超出了64M,Java虚拟机就会抛出OutOfMemoryError,并停止运行。所以, ......

基数排序 java 算法

package sort;
public class RadixSort {
 // 求x 数第d位上的数字,例如12345,十位数字是4  12345/10%10=4
 // d=0 表示个位 ;d=1 表示十位...依次类推
 public static int digit(int d,int x){
  return x/(int)Math.pow(10, d)%10;
 }
 
 public static void ra ......

java实现zip与unzip

 jdk提供了Zip相关的类方便的实现压缩和解压缩。使用方法很简单。下边分别是压缩和解压缩的简单事例
1、压缩的
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipE ......

Java 连接数据库、执行SQL封装类

/*当执行SQL时发现不能连接数据库,先重连一次*/
 
import java.io.FileInputStream;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号