java实现种子填充算法,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 (

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值