`
孙瑞鸿
  • 浏览: 17880 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

画板

 
阅读更多
窗体类

package com032802;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JSlider;

public class DrawBorder extends JFrame{
	//定义主函数
	public static void main(String[] args){
		//实例化DrawBorder类的对象
	DrawBorder db=new DrawBorder();
	//调用initUI函数
	db.initUI();	
	}
	//定义一个initUI函数
	public void initUI(){
		//设置属性值
		this.setTitle("");
		this.setSize(800, 900);
		this.setDefaultCloseOperation(3);
		this.setResizable(true);
		this.setLocationRelativeTo(null);
		this.setLayout(new FlowLayout());
		//实例化按钮
		JButton butLine=new JButton("Line");
		JButton butRect=new JButton("Rect");
		JButton butOval=new JButton("Oval");
		JButton butColor=new JButton("Color");
		JButton butOval0=new JButton("Oval0");
		JButton butRect0=new JButton("Rect0");
		JButton butSanJiao=new JButton("SanJiao");
		JButton butRand=new JButton("Rand");
		JButton butWall=new JButton("Wall");
		JButton butRing=new JButton("Ring");
		//将按钮添加到窗体上		
		this.add(butLine);
		this.add(butRect);
		this.add(butOval);
		this.add(butColor);
		this.add(butOval0);
		this.add(butRect0);
		this.add(butSanJiao);
		this.add(butRand);
		this.add(butWall);
		this.add(butRing);
				
		ActionListener a=new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if(e.getActionCommand().equals("Color")){
					color=JColorChooser.showDialog(null, "颜色的选择", Color.black);
						System.out.println("Color="+color);
				}
				else{
					str=e.getActionCommand();
					System.out.println("str="+str);
				}
			}
			
	  };
           //给按钮添加监听器
	  butLine.addActionListener(a);
		butRect.addActionListener(a);
		butOval.addActionListener(a);
		butColor.addActionListener(a);
		butOval0.addActionListener(a);
		butRect0.addActionListener(a);
		butSanJiao.addActionListener(a);
		butRand.addActionListener(a);
		butWall.addActionListener(a);
		butRing.addActionListener(a);
		
		
		
		
		
		
		this.setVisible(true);
		 //取得画布
		Graphics g=this.getGraphics();
       		DrawListener d=new DrawListener(g);
		this.addMouseListener(d);
		//实例化拉杆并设置拉杆属性
		JSlider js=new JSlider();
		js.setMaximum(300);
		js.setValue(10);
		//给拉杆添加监听器
		MyChangeListener mcl=new MyChangeListener(js,this,g);
		js.addChangeListener(mcl);
		this.add(js);
	
	}
	public static Color color=Color.black;
	public static String str="Line";
	
}


监听器
package com032802;

import com032802.DrawBorder;

import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;

public class DrawListener implements MouseListener{
    public int x1,x2,y1,y2,x0,y0,xp,yp;
    public double x3,x4,y3,y4;
  public int x,y;
  public static float a=1.7f,b=1.7f,c=0.06f,d=1.2f;
  public static float a1=1.4f,b1=1.56f,c1=1.4f,d1=-6.56f;
  
  //实例化随机数
  Random rd=new Random();
   Graphics g;

   public DrawListener(Graphics g){
		this.g=g;
	}
	public void mousePressed(MouseEvent e) {
		x1=e.getX();
		y1=e.getY();
	}

	public void mouseReleased(MouseEvent e) {
		System.out.print("ssss");
		x2=e.getX();
		y2=e.getY();
		g.setColor(DrawBorder.color);
		if(DrawBorder.str.equals("Rect0")){
		this.DrawRect0(e);
		}else if(DrawBorder.str.equals("Line")){
			g.drawLine(x1,y1,x2,y2);
		}else if(DrawBorder.str.equals("Rect")){
			g.drawRect(x1, y1, Math.abs(x1-x2), Math.abs(y1-y2));
		}else if(DrawBorder.str.equals("Oval")){
			g.drawOval(x1, y1,Math.abs(x1-x2), Math.abs(y1-y2));
		}else if(DrawBorder.str.equals("Oval0")){
			this.DrawOval0(e);
		}else if(DrawBorder.str.equals("SanJiao")){
			this.DrawSanJiao(e);
		}else if(DrawBorder.str.equals("Rand")){
			this.DrawRand(e);
		}else if(DrawBorder.str.equals("Wall")){
			this.DrawWall(e);
		}else if(DrawBorder.str.equals("Ring")){
			this.DrawRing(e);
		}
}
		
	
	
	public void DrawRect0(MouseEvent e){
		for(int i=0;i<100;i++){
			if(x1!=x2||y1!=y2){
			
				g.drawRect(x1, y1,Math.abs(x1-x2),Math.abs(y1-y2));
				
				x1=x1+2;y1=y1+2;x2=x2-2;y2=y2-2;
			}		
				
		}	
	}
	public void DrawOval0(MouseEvent e){
		for(int i=0;i<50;i++){
			g.drawOval(x1, y1,Math.abs(x1-x2), Math.abs(y1-y2));
			
			x1=x1+2;y1=y1+2;x2=x2-2;y2=y2-2;
			
		}
}
	public void DrawSanJiao(MouseEvent e){
		for(int i=0;i<100;i++){
			g.drawLine(x1, y1,x2,y1);
			
			x1--;y1=y1+2;x2++;
			}
	}
	public void DrawRand(MouseEvent e){
		x0=rd.nextInt(1000);
		y0=rd.nextInt(1000);
		x1=rd.nextInt(1000);
		y1=rd.nextInt(1000);
		x2=rd.nextInt(1000);
		y2=rd.nextInt(1000);
		xp=rd.nextInt(1000);
		yp=rd.nextInt(1000);
		for(int i=0;i<10000;i++){
		int r=rd.nextInt(3);
		switch(r){
		case 0: {xp=(x0+xp)/2;
			 	yp=(y0+yp)/2;
			 	g.drawLine(xp, yp, xp, yp);break;
				}
			 	
		case 1: {xp=(x1+xp)/2;
	 			yp=(y1+yp)/2;
	 			
	 			g.drawLine(xp, yp, xp, yp);break;
				}
		case 2: {xp=(x2+xp)/2;
	 			yp=(y2+yp)/2;
	 			g.drawLine(xp, yp, xp, yp);break;}
		}
		}
	}
	
	public void DrawWall(MouseEvent e){
		for(int i=0;i<1000000;i++){
		x4=Math.sin(a*y3)+Math.cos(a*x3)*c;
		y4=Math.sin(b*x3)+Math.cos(b*y3)*d;
		x3=x4;
		y3=y4;
		x=(int)(x3*100)+500;
		y=(int)(y3*100)+500;
		g.drawLine(x, y, x, y);
	}
}
	public void DrawRing(MouseEvent e){
		for(int i=0;i<50000;i++){
		x4=d1*Math.sin(a1*x3)-Math.sin(b1*y3);
		y4=c1*Math.cos(a1*x3)+Math.cos(b1*y3);
		x3=x4;
		y3=y4;
		x=(int)(x3*10)+500;
		y=(int)(y3*10)+500;
		g.drawLine(x, y, x, y);
	}
}
	public void mouseEntered(MouseEvent e) {
		
	}

	public void mouseExited(MouseEvent e) {
		
	}
	public void mouseClicked(MouseEvent e) {
		
	}
}

拉杆
package com032802;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;

public class MyChangeListener implements javax.swing.event.ChangeListener{
public JSlider js;
public JFrame jf;
public Graphics g;
int x,y,x1=50,x2=500,y1=50,y2=500;
         //构造方法
	public MyChangeListener(JSlider js,JFrame jf,Graphics g){
		this.js=js;
		this.jf=jf;
		this.g=g;
		
	}
	public void stateChanged(ChangeEvent e) {
		js.getValue();
		int w=jf.getWidth();
		int h=jf.getHeight();
	          	for(int i=0;i<255;i++){
			    Color c=new Color(0,i,i);
		             g.setColor(c);
			    g.fillOval(x1,y1,Math.abs(x1-x2),Math.abs(y2-y1));
			    x1++;y1++;x2--;y2--;
			}
			
			ImageIcon im=new ImageIcon("images/签名0.jpg");
			Image ima=im.getImage();
			g.drawImage(ima,w/4+300,h/4+100,null);
		
	}
}
  • 大小: 217.5 KB
  • 大小: 211.9 KB
分享到:
评论

相关推荐

    易语言画板透明去色

    在这个"易语言画板透明去色"的主题中,我们主要探讨的是如何利用易语言来实现一个功能,即在画板上进行图像处理,实现透明度调整和去色效果。 首先,我们需要了解画板的基本概念。在计算机图形学中,画板是一个可以...

    画板_画板_labview程序_源码

    在这个“画板”项目中,开发者利用LabVIEW的编程能力创建了一个简单的画图工具,用户可以在这个界面上绘制直线、圆形和椭圆等基本图形。 首先,我们来看一下这个程序的核心功能。在LabVIEW中,每个功能或操作通常被...

    几何画板最强中文永久免费5.06版本安装包下载解压安装即可

    几何画板最强中文永久免费5.06版本安装包下载解压安装即可几何画板最强中文永久免费5.06版本安装包下载解压安装即可几何画板最强中文永久免费5.06版本安装包下载解压安装即可几何画板最强中文永久免费5.06版本安装包...

    几何画板5.01 绿色

    《几何画板5.01 绿色版:探索数学世界的可视化工具》 几何画板,作为一款全球广受欢迎的数学教学辅助软件,以其强大的功能和直观的操作界面,深受教师和学生的喜爱。这款5.01版本的绿色版,不仅保留了原有的优秀...

    Sketchpad几何画板工具包

    Sketchpad几何画板工具包是2023年的最新版本,专门为教育和学习几何图形设计的一款强大工具。这个工具包包含44个精心组织的自定义工具文件夹,每个文件夹下都蕴藏着丰富的功能,总计超过800个小工具。这些工具不仅...

    几何画板绿色版无毒完整

    几何画板是一款强大的数学教学工具,尤其在学习和教授几何、代数以及解析几何等领域具有广泛应用。这款软件以其直观易用的界面和丰富的图形绘制功能,深受数学教师和学生的喜爱。"绿色版"指的是该软件无需安装,下载...

    几何画板文件打包机(GSP转EXE)

    《几何画板文件打包机——将GSP转化为EXE的高效工具详解》 几何画板,作为一款强大的数学教学辅助软件,深受广大师生喜爱。然而,几何画板的使用需要用户先安装软件,这对于分享和传播教学资源带来了一定的不便。...

    玲珑画板 6.045 版安装.rar

    《玲珑画板 6.045 版:数学作图的新选择》 玲珑画板是一款专为数学教学和学习设计的图形绘制软件,它以其简洁的界面和易于操作的特点,成为了几何画板的一个有力替代品。与几何画板相比,玲珑画板在功能上同样强大...

    几何画板基础级课件gsp模版170例

    《几何画板基础级课件GSP模版170例》是一份全面介绍几何画板使用技巧的资源集合,适合初学者和教师们参考学习。几何画板是一款强大的数学绘图工具,它能帮助用户动态地创建、探索和演示各种几何图形,尤其在数学教学...

    Java实现画板(Java小程序 模仿Win系统画板)

    在本文中,我们将深入探讨如何使用Java编程语言来实现一个类似于Windows操作系统中的简易画板程序。这个Java小程序将提供基本的绘图功能,使用户能够通过鼠标或触控设备进行绘画创作。 首先,我们需要理解Java GUI...

    几何画板自定义工具包-800多个小工具

    几何画板是一款强大的动态几何软件,它允许用户创建、编辑和探索各种几何图形,广泛应用于数学教学和学术研究。这款“几何画板自定义工具包”包含800多个精心设计的小工具,极大地扩展了软件的功能,使得用户在操作...

    MFC 画板 部分功能 实现

    在本项目中,我们主要探讨的是如何利用Microsoft Foundation Classes (MFC)库来构建一个具有基本绘图功能的画板应用程序。MFC是微软提供的一种C++类库,它为Windows应用程序开发提供了便利,简化了对Windows API的...

    WPF+WCF画板聊天程序

    【标题】"WPF+WCF画板聊天程序"是一个基于Windows Presentation Foundation (WPF) 和 Windows Communication Foundation (WCF) 的应用程序,它提供了一个实时的交互式画板和聊天功能,使得用户能够进行即时通讯。...

    几何画板基础篇_几何画板作图方法

    几何画板基础篇 基础篇之: 几何画板作图方法 1 利用基本工具作图----甘志高(laoshi_G)编写 2 用构造菜单作图---甘志高(laoshi_G)编写 1.1 几何画板的启动和绘图工具的使用 1.2 用绘图工具绘制简单的几何图形 1.3...

    几何画板课件350套.zip

    几何画板是一款强大的动态几何软件,它为教育者和学生提供了直观、易用的工具来探索和理解数学概念,特别是几何学。这个“几何画板课件350套.zip”压缩包包含了350个专门设计的课件,旨在帮助初中数学教学,特别是...

    opencv画板功能实现源程序

    在本项目中,我们将关注如何利用OpenCV来实现一个基础的画板功能。这个画板允许用户在界面上自由绘制,类似于电子白板或者涂鸦应用。 首先,我们需要了解OpenCV中的基本图形绘制函数。`cv2.line()`用于绘制直线,`...

    几何画板350套课件-官方出品

    几何画板是一款强大的动态几何软件,它为数学和物理教学提供了直观、易用的工具,使得教师和学生能够轻松地创建、演示和探索各种几何、代数和力学问题。这款软件自诞生以来,就被广大教育工作者广泛应用于课堂教学...

    几何画板5.06最强中文版.zip

    几何画板是一款强大的数学教学工具,专为教育者和学生设计,用于绘制二维几何图形、进行动态数学探索和直观教学。这款软件版本为5.06,是中文增强版,包含丰富的功能和易于理解的界面,对中国用户尤其友好。本压缩包...

    几何画板5.02最强中文版.rar

    几何画板是一款强大的数学教学工具,专为教育者和学生设计,用于动态地展示几何、代数和微积分概念。这款软件的5.02版本是其经典且广受欢迎的一个版本,具有诸多实用功能和易用性。在这个“几何画板5.02最强中文版....

    Z+Z 新版超级画板与立体几何 注册版

    Z+Z超级画板是一款专为数学教学设计的高级图形软件,它在教育领域中被广泛应用,特别是对于几何课程的支持尤为突出。这款软件的新版,即"Z+Z 新版超级画板与立体几何 注册版",为用户提供了一种无须注册即可直接使用...

Global site tag (gtag.js) - Google Analytics