- 浏览: 43672 次
- 性别:
- 来自: 深圳
最新评论
-
xjdwilltrue:
想当年我用matlab做的毕业设计,现如今都不知道楼主说的是什 ...
Matlab入门需掌握的一些知识 -
laogao3232:
我当年毕业设计就是用matlab处理图像的。
图像处理之二值化形态学(1) -
jhq198:
comsci 写道老大,你这个软件是什么语言开发的? 开源否? ...
图像处理之二值化形态学(1) -
comsci:
老大,你这个软件是什么语言开发的? 开源否?
图像处理之二值化形态学(1) -
梳子不爱头发:
写的很详细,不信你看
图像增强之空域变换增强(2)
在Java中,参数传递分为两种类型,一种是值传递,另一种是引用传递,也称地址传递。
值传递意即只传递数值方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。它适用于Java中的基本数据类型包括了String。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。例子如下:(设已经创建了Student类)
String name = "柯南";
Student stu = new Student();//实例化对象
stu.setName(name);
int score = 100;
Student stu1 = new Student();
stu1.setName("小兰");
stu1 = stu;
stu.setName("哀");
stu1.study(5);
stu.study(score);
System.out.println("score = "+score);
我们会发现输出的是:柯南在学习,得分为5分。
哀在学习,得分为100分。
score=100
可知引用传递适用于Java中的对象类型(类类型,引用类型),对象类型包括定义的类,接口,抽象类和数组。
在了解了参数的传递后,我们来谈谈简单画板的制作:
首先,画板需要使用三个组件:JFrame,JPanel,JButton. 其次我们要分析简单画板的布局,知道要采用边框布局,创建两个面板,北边面板上放按钮;中间面板上供画画。
大概初步实现画板界面的步骤如下:
1.定义一个A类,在类中定义主函数,在主函数中创建A类的对象调用初始化界面的方法
2.在A中定义一个初始化界面的方法
3.初始化界面的方法中,创建JFrame的对象,设置JFrame对象的属性值(布局)
4.定义创建北边面板的方法,参数是JFrame对象。然后设置面板属性,再创建按钮,设置按钮大小,文本,将按钮添加到面板上。最后将北边面板添加到窗体的北边。
5.定义创建中间面板的方法,参数是JFrame对象,设置属性
6.将中间面板要添加到窗体的中间
接着要实现画板功能,我们就要安装事件监听器了。事件源有两个,所有的按钮和中间面板,分别用的事件监听器方法为
addActionListener(ActionListener l);和addMouseListener(MouseListener l);
最后补充说下:Graphics Graphics提供了绘制图形的方法。
通过完成这些,我们便可实现画板上的所有图像,铅笔,刷子,橡皮擦,喷枪等各式各样的功能!怎样,心动了吧!那就自己动手做一个吧!!
我弄的简单画板制作代码如下,可供参考:
package preparation;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
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.JPanel;
public class Draw {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//实例化一个画板对象
Draw sd=new Draw();
//调用显示画板的方法
sd.showUI();
}
public void showUI()
{
/*
* 实例化一个窗体对象
*/
JFrame jf=new JFrame();
jf.setTitle("普通画板");//设置窗体标题
jf.setSize(600,500);//设置窗体大小
jf.setLayout(new BorderLayout());//设置窗体布局为边框布局
jf.setResizable(false);//禁止窗体改变大小
jf.setLocationRelativeTo(null);//设置窗体居中
jf.setDefaultCloseOperation(3);//设置关闭窗体关闭程序
//调用创建北边面板方法
JPanel northpanel=creatNorthPanel();
//将面板添加到窗体上
jf.add(northpanel,BorderLayout.NORTH);
//调用创建中间面板方法
JPanel centerpanel=creatCenterPanel();
//将面板添加到窗体上
jf.add(centerpanel,BorderLayout.CENTER);
jf.setVisible(true);//设置窗体为可见 // 先让窗体可见,再弄下面的程序!!!!!!!!!!!!!!!!!!!!!!!!
Graphics g=centerpanel.getGraphics();//从中间面板中接收Graphics对象
DrawListener ml=new DrawListener(g,this);//实例化一个DrawListener类对象
//给中间面板添加动作监听器,绑定MouseListener事情处理类对象
centerpanel.addMouseListener(ml);
//给中间面板添加动作监听器,绑定MouseMotionListener事件处理类对象
centerpanel.addMouseMotionListener(ml);
}
private String str="Line";//定义一个存储图像的属性值
/*
* 获得存储图像的属性
*/
public String getStr()
{
return str;
}
private Color color;//定义颜色的属性值
/*
* 获得颜色的属性
*/
public Color getColor()
{
return color;
}
/*
* 创建北边面板的方法
*/
public JPanel creatNorthPanel()
{ JPanel north_panel=new JPanel();//实例化北边面板的对象
//设置北边面板的属性
north_panel.setPreferredSize(new Dimension(500,100));//设置北边面板大小
north_panel.setLayout(new FlowLayout(FlowLayout.LEFT));//设置北边面板布局为流式布局,并向左对齐
//匿名实现类,实现ActionListener接口
ActionListener al=new ActionListener()
{
//事情发生类方法
public void actionPerformed(ActionEvent e)
{
//判断是否点击到"Color"按钮
if(e.getActionCommand().equals("Color"))
{ //弹出一个颜色选择器,供选择颜色;选择好的颜色返回color
color=JColorChooser.showDialog(null, "颜色选择器", Color.BLACK);[align=center][/align]
}
else
{//获取按钮上的文本
str=e.getActionCommand();//将获得的字符赋给字符串str
}
}
};//注意加“;”!!!!!!!!!!!!!!!!!!
//创建一位数组,储存按钮上的文本
String []array={"Line","Rectangle","Oval","RoundRect","Polygon","Pencil","Color","Eraser","Brush","Gunjet"};
// 遍历数组,创建按钮,并添加文本在按钮上
for(int i=0;i<array.length;i++)
{
JButton jb=new JButton(array[i]);//实例化按钮对象
jb.setPreferredSize(new Dimension(100,40));//设置按钮大小
//给事件源添加动作监听器方法,绑定事件处理类对象
jb.addActionListener(al);
north_panel.add(jb);//将按钮添加到北边面板上
}
return north_panel;
}
/*
* 创建中间面板的方法
*/
public JPanel creatCenterPanel()
{ JPanel center_panel=new JPanel();//实例化中间面板的对象
center_panel.setBackground(Color.WHITE);//设置面板的背景色
return center_panel;
}
}
package preparation;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Random;
public class DrawListener implements MouseListener ,MouseMotionListener {
private int x1,x2,y1,y2;//记录鼠标两次点击的坐标
private Graphics g;//从界面对象上得到的画布对象
private Graphics2D gg;
private Draw sd;
private int flag=1;
public int m,n;
//构造方法,用来接收Graphics对象和Draw类对象
public DrawListener(Graphics g,Draw sd){
this.g=g;
this.sd=sd;
}
//鼠标按下的点的坐标
public void mousePressed(MouseEvent e){
//记录第一次点击的x,y:通过事件对象e得到的
x1=e.getX();
y1=e.getY();
flag++;
if(flag==2)
{
m=x1;
n=y1;
}
//判断鼠标是按左键还是右键
if(e.getButton()==1)
{ //按左键,颜色为sd得到的黑色
g.setColor(sd.getColor());
}
else if(e.getButton()==3)
{ //按右键,颜色为绿色
g.setColor(Color.GREEN);
}
}
//鼠标释放时的坐标
public void mouseReleased(MouseEvent e)
{
//记录第二次点击时的坐标
x2=e.getX();
y2=e.getY();
//判断是否为Line
if(sd.getStr().equals("Line"))
{
//调用画布对象的方法,画直线
g.drawLine(x1,y1,x2,y2);
}
/*
* 判断是否为矩形Rectangle
*/
if(sd.getStr().equals("Rectangle"))
{
g.drawRect(Math.min(x1, x2), Math.min(y1, y2),Math.abs(x1-x2), Math.abs(y1-y2));//Math.min(x1, x2), Math.min(y1, y2)!
}
/*
* 判断是否为椭圆形Oval
*/
if(sd.getStr().equals("Oval"))
{
g.drawOval(x1, y1,Math.abs(x1-x2) , Math.abs(y1-y2));
}
/*
* 判断是否为RoundRect
*/
if(sd.getStr().equals("RoundRect"))
{
g.drawRoundRect(x1, y1, Math.abs(x1-x2),Math.abs(y1-y2), Math.abs(x1-x2)/2,Math.abs(y1-y2)/2 );
}
}
/*
* 当鼠标在事件源上单击时按键执行的方法
*/
public void mouseClicked(MouseEvent e)
{ //获取点击过程中的坐标值
int x = e.getX();
int y = e.getY();
if(sd.getStr().equals("Polygon"))
{
g.drawLine(x, y, m, n);
}
}
public void mouseEntered(MouseEvent e)
{}
public void mouseExited(MouseEvent e)
{}
/*
* 当鼠标在事件源上拖拉时按键执行的方法
*/
public void mouseDragged(MouseEvent e) {
//判断点击的按钮是否为"Pencil"
if(sd.getStr().equals("Pencil"))
{
//获取x,y的坐标值
int x=e.getX();
int y=e.getY();
//画线
g.drawLine(x1, y1, x, y);
//赋值
x1=x;
y1=y;
}
//判读点击的按钮是否为"Eraser"
if(sd.getStr().equals("Eraser"))
{
//获取x,y的坐标值
int x=e.getX();
int y=e.getY();
//设置线条为白色
g.setColor(Color.WHITE);
//画线
gg =(Graphics2D)g; //实例化一个Graphics2D对象
//设置笔的粗细为2.0F,线条端点是CAP_ROUND,点划线模式为 JOIN_ROUND
gg.setStroke(new BasicStroke(10.0F,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
gg.drawLine(x1,y1,x,y);
gg.setStroke(new BasicStroke());
//赋值
x1=x;
y1=y;
}
//判读点击的按钮是否为"Brush"
if(sd.getStr().equals("Brush"))
{
//获取x,y的坐标值
int x=e.getX();
int y=e.getY();
//设置线条为黑色
g.setColor(Color.BLACK);
/*
*画线
*/
gg =(Graphics2D)g; //实例化一个Graphics2D对象
//设置笔的粗细为2.0F,线条端点是CAP_ROUND,点划线模式为 JOIN_ROUND
gg.setStroke(new BasicStroke(10.0F,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
gg.drawLine(x1,y1,x,y);
gg.setStroke(new BasicStroke());
//赋值
x1=x;
y1=y;
}
//判读点击的按钮是否为"Gunjet"
if(sd.getStr().equals("Gunjet"))
{
//获取x,y的坐标值
int x=e.getX();
int y=e.getY();
int x0=0; int y0=0;
//设置线条为黑色
g.setColor(Color.BLACK);
//噴槍大小
int size=8; //噴槍点數
int count=10;
for(int i=0;i<count;i++)
{ x0 = new Random().nextInt(size)+ 1;
y0 = new Random().nextInt(size) + 1;
g.fillRect(x+x0, y+y0,5,5);
}
}
/*
* 判断是否为Polygon
*/
//获取拖动过程中的坐标值
int x = e.getX();
int y = e.getY();
if(sd.getStr().equals("Polygon"))
{
//判断鼠标点击的坐标是不是与第一次点击的一样,不同则画线
if((x!=m)||(y!=n))
{
//画线
g.drawLine(x1, y1, x, y);
//赋值
x1=x;
y1=y;
}
}
}
/*
* 事件源上移动鼠标的方法
*/
public void mouseMoved(MouseEvent e) {
}
}
值传递意即只传递数值方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。它适用于Java中的基本数据类型包括了String。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。例子如下:(设已经创建了Student类)
String name = "柯南";
Student stu = new Student();//实例化对象
stu.setName(name);
int score = 100;
Student stu1 = new Student();
stu1.setName("小兰");
stu1 = stu;
stu.setName("哀");
stu1.study(5);
stu.study(score);
System.out.println("score = "+score);
我们会发现输出的是:柯南在学习,得分为5分。
哀在学习,得分为100分。
score=100
可知引用传递适用于Java中的对象类型(类类型,引用类型),对象类型包括定义的类,接口,抽象类和数组。
在了解了参数的传递后,我们来谈谈简单画板的制作:
首先,画板需要使用三个组件:JFrame,JPanel,JButton. 其次我们要分析简单画板的布局,知道要采用边框布局,创建两个面板,北边面板上放按钮;中间面板上供画画。
大概初步实现画板界面的步骤如下:
1.定义一个A类,在类中定义主函数,在主函数中创建A类的对象调用初始化界面的方法
2.在A中定义一个初始化界面的方法
3.初始化界面的方法中,创建JFrame的对象,设置JFrame对象的属性值(布局)
4.定义创建北边面板的方法,参数是JFrame对象。然后设置面板属性,再创建按钮,设置按钮大小,文本,将按钮添加到面板上。最后将北边面板添加到窗体的北边。
5.定义创建中间面板的方法,参数是JFrame对象,设置属性
6.将中间面板要添加到窗体的中间
接着要实现画板功能,我们就要安装事件监听器了。事件源有两个,所有的按钮和中间面板,分别用的事件监听器方法为
addActionListener(ActionListener l);和addMouseListener(MouseListener l);
最后补充说下:Graphics Graphics提供了绘制图形的方法。
通过完成这些,我们便可实现画板上的所有图像,铅笔,刷子,橡皮擦,喷枪等各式各样的功能!怎样,心动了吧!那就自己动手做一个吧!!
我弄的简单画板制作代码如下,可供参考:
package preparation;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
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.JPanel;
public class Draw {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//实例化一个画板对象
Draw sd=new Draw();
//调用显示画板的方法
sd.showUI();
}
public void showUI()
{
/*
* 实例化一个窗体对象
*/
JFrame jf=new JFrame();
jf.setTitle("普通画板");//设置窗体标题
jf.setSize(600,500);//设置窗体大小
jf.setLayout(new BorderLayout());//设置窗体布局为边框布局
jf.setResizable(false);//禁止窗体改变大小
jf.setLocationRelativeTo(null);//设置窗体居中
jf.setDefaultCloseOperation(3);//设置关闭窗体关闭程序
//调用创建北边面板方法
JPanel northpanel=creatNorthPanel();
//将面板添加到窗体上
jf.add(northpanel,BorderLayout.NORTH);
//调用创建中间面板方法
JPanel centerpanel=creatCenterPanel();
//将面板添加到窗体上
jf.add(centerpanel,BorderLayout.CENTER);
jf.setVisible(true);//设置窗体为可见 // 先让窗体可见,再弄下面的程序!!!!!!!!!!!!!!!!!!!!!!!!
Graphics g=centerpanel.getGraphics();//从中间面板中接收Graphics对象
DrawListener ml=new DrawListener(g,this);//实例化一个DrawListener类对象
//给中间面板添加动作监听器,绑定MouseListener事情处理类对象
centerpanel.addMouseListener(ml);
//给中间面板添加动作监听器,绑定MouseMotionListener事件处理类对象
centerpanel.addMouseMotionListener(ml);
}
private String str="Line";//定义一个存储图像的属性值
/*
* 获得存储图像的属性
*/
public String getStr()
{
return str;
}
private Color color;//定义颜色的属性值
/*
* 获得颜色的属性
*/
public Color getColor()
{
return color;
}
/*
* 创建北边面板的方法
*/
public JPanel creatNorthPanel()
{ JPanel north_panel=new JPanel();//实例化北边面板的对象
//设置北边面板的属性
north_panel.setPreferredSize(new Dimension(500,100));//设置北边面板大小
north_panel.setLayout(new FlowLayout(FlowLayout.LEFT));//设置北边面板布局为流式布局,并向左对齐
//匿名实现类,实现ActionListener接口
ActionListener al=new ActionListener()
{
//事情发生类方法
public void actionPerformed(ActionEvent e)
{
//判断是否点击到"Color"按钮
if(e.getActionCommand().equals("Color"))
{ //弹出一个颜色选择器,供选择颜色;选择好的颜色返回color
color=JColorChooser.showDialog(null, "颜色选择器", Color.BLACK);[align=center][/align]
}
else
{//获取按钮上的文本
str=e.getActionCommand();//将获得的字符赋给字符串str
}
}
};//注意加“;”!!!!!!!!!!!!!!!!!!
//创建一位数组,储存按钮上的文本
String []array={"Line","Rectangle","Oval","RoundRect","Polygon","Pencil","Color","Eraser","Brush","Gunjet"};
// 遍历数组,创建按钮,并添加文本在按钮上
for(int i=0;i<array.length;i++)
{
JButton jb=new JButton(array[i]);//实例化按钮对象
jb.setPreferredSize(new Dimension(100,40));//设置按钮大小
//给事件源添加动作监听器方法,绑定事件处理类对象
jb.addActionListener(al);
north_panel.add(jb);//将按钮添加到北边面板上
}
return north_panel;
}
/*
* 创建中间面板的方法
*/
public JPanel creatCenterPanel()
{ JPanel center_panel=new JPanel();//实例化中间面板的对象
center_panel.setBackground(Color.WHITE);//设置面板的背景色
return center_panel;
}
}
package preparation;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Random;
public class DrawListener implements MouseListener ,MouseMotionListener {
private int x1,x2,y1,y2;//记录鼠标两次点击的坐标
private Graphics g;//从界面对象上得到的画布对象
private Graphics2D gg;
private Draw sd;
private int flag=1;
public int m,n;
//构造方法,用来接收Graphics对象和Draw类对象
public DrawListener(Graphics g,Draw sd){
this.g=g;
this.sd=sd;
}
//鼠标按下的点的坐标
public void mousePressed(MouseEvent e){
//记录第一次点击的x,y:通过事件对象e得到的
x1=e.getX();
y1=e.getY();
flag++;
if(flag==2)
{
m=x1;
n=y1;
}
//判断鼠标是按左键还是右键
if(e.getButton()==1)
{ //按左键,颜色为sd得到的黑色
g.setColor(sd.getColor());
}
else if(e.getButton()==3)
{ //按右键,颜色为绿色
g.setColor(Color.GREEN);
}
}
//鼠标释放时的坐标
public void mouseReleased(MouseEvent e)
{
//记录第二次点击时的坐标
x2=e.getX();
y2=e.getY();
//判断是否为Line
if(sd.getStr().equals("Line"))
{
//调用画布对象的方法,画直线
g.drawLine(x1,y1,x2,y2);
}
/*
* 判断是否为矩形Rectangle
*/
if(sd.getStr().equals("Rectangle"))
{
g.drawRect(Math.min(x1, x2), Math.min(y1, y2),Math.abs(x1-x2), Math.abs(y1-y2));//Math.min(x1, x2), Math.min(y1, y2)!
}
/*
* 判断是否为椭圆形Oval
*/
if(sd.getStr().equals("Oval"))
{
g.drawOval(x1, y1,Math.abs(x1-x2) , Math.abs(y1-y2));
}
/*
* 判断是否为RoundRect
*/
if(sd.getStr().equals("RoundRect"))
{
g.drawRoundRect(x1, y1, Math.abs(x1-x2),Math.abs(y1-y2), Math.abs(x1-x2)/2,Math.abs(y1-y2)/2 );
}
}
/*
* 当鼠标在事件源上单击时按键执行的方法
*/
public void mouseClicked(MouseEvent e)
{ //获取点击过程中的坐标值
int x = e.getX();
int y = e.getY();
if(sd.getStr().equals("Polygon"))
{
g.drawLine(x, y, m, n);
}
}
public void mouseEntered(MouseEvent e)
{}
public void mouseExited(MouseEvent e)
{}
/*
* 当鼠标在事件源上拖拉时按键执行的方法
*/
public void mouseDragged(MouseEvent e) {
//判断点击的按钮是否为"Pencil"
if(sd.getStr().equals("Pencil"))
{
//获取x,y的坐标值
int x=e.getX();
int y=e.getY();
//画线
g.drawLine(x1, y1, x, y);
//赋值
x1=x;
y1=y;
}
//判读点击的按钮是否为"Eraser"
if(sd.getStr().equals("Eraser"))
{
//获取x,y的坐标值
int x=e.getX();
int y=e.getY();
//设置线条为白色
g.setColor(Color.WHITE);
//画线
gg =(Graphics2D)g; //实例化一个Graphics2D对象
//设置笔的粗细为2.0F,线条端点是CAP_ROUND,点划线模式为 JOIN_ROUND
gg.setStroke(new BasicStroke(10.0F,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
gg.drawLine(x1,y1,x,y);
gg.setStroke(new BasicStroke());
//赋值
x1=x;
y1=y;
}
//判读点击的按钮是否为"Brush"
if(sd.getStr().equals("Brush"))
{
//获取x,y的坐标值
int x=e.getX();
int y=e.getY();
//设置线条为黑色
g.setColor(Color.BLACK);
/*
*画线
*/
gg =(Graphics2D)g; //实例化一个Graphics2D对象
//设置笔的粗细为2.0F,线条端点是CAP_ROUND,点划线模式为 JOIN_ROUND
gg.setStroke(new BasicStroke(10.0F,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
gg.drawLine(x1,y1,x,y);
gg.setStroke(new BasicStroke());
//赋值
x1=x;
y1=y;
}
//判读点击的按钮是否为"Gunjet"
if(sd.getStr().equals("Gunjet"))
{
//获取x,y的坐标值
int x=e.getX();
int y=e.getY();
int x0=0; int y0=0;
//设置线条为黑色
g.setColor(Color.BLACK);
//噴槍大小
int size=8; //噴槍点數
int count=10;
for(int i=0;i<count;i++)
{ x0 = new Random().nextInt(size)+ 1;
y0 = new Random().nextInt(size) + 1;
g.fillRect(x+x0, y+y0,5,5);
}
}
/*
* 判断是否为Polygon
*/
//获取拖动过程中的坐标值
int x = e.getX();
int y = e.getY();
if(sd.getStr().equals("Polygon"))
{
//判断鼠标点击的坐标是不是与第一次点击的一样,不同则画线
if((x!=m)||(y!=n))
{
//画线
g.drawLine(x1, y1, x, y);
//赋值
x1=x;
y1=y;
}
}
}
/*
* 事件源上移动鼠标的方法
*/
public void mouseMoved(MouseEvent e) {
}
}
发表评论
-
实现多人聊天——简单群聊服务器的实现
2014-07-25 23:36 717作为一个现代人,我 ... -
通信入门之实现最简单的网上聊天
2014-06-02 11:32 1314想要实现网 ... -
探索分形,创造美!
2014-05-19 17:15 1027何为分形,简单来说,它就是一种具有自相似特性的现 ... -
探索分形,制造美!
2014-05-19 16:54 1何为分形,简单来说,它就是一种具有自相似特性的现象、图象或 ... -
线程小动画之屏保--模仿小球碰撞反弹(二)
2014-04-20 13:07 1338之前已经能产生许多小 ... -
线程小动画之屏保--模仿小球碰撞反弹(一)
2014-04-20 12:47 2515相信大家都对屏幕保护中的小球碰撞动画深有印象吧 ... -
学习哈夫曼树--------两部曲
2014-03-28 20:45 633学习一样事物,自然要先明其义,再通其用。哈夫曼树, ... -
Java中单链表之浅析
2014-03-23 14:40 815何谓链表?百度下可以知道链表是一种物理存储上 ... -
画板的重绘
2014-03-09 14:15 422当我们写好一个简易画板,然后在上面画线,画 ... -
Java中的数组
2014-03-03 21:16 526谈到数组,大家都在学习C语言中频繁接触到它,自然 ... -
Java中的重要类
2014-02-13 22:53 556Java中有两个重要类,Str ... -
泛型
2014-02-13 22:16 366众所周知,Object类型 ... -
基本数据类型的强制转换
2014-02-13 21:56 637基本数据类型之间可以很方便的进行转换,主要有几种常见的方法,归 ... -
事件机制的总结
2013-12-05 21:31 346当别人打电话过来 ... -
类的继承总结
2013-12-02 21:59 397在生活中我们往往把许多东西归为一个整体,如球有篮球,足球 ... -
类和对象的总结
2013-11-27 21:30 345当说到对象,你的脑海里面浮现的可能是蔚蓝天空下,巍峨山峰 ... -
Java数据类型总结
2013-11-25 17:19 383Java语言类型分为两种,基本数据类型和对象数据类型。对 ...
相关推荐
使用几何画板制作数学类课件的PPT,很详尽地介绍的几何画板制作数学课件的方法。
andriod大作业,andriod画板制作教程,andriod画板程序代码。
VB制作的简单画板程序,可以改变画笔颜色
基于MFC的画板制作具体代码,适合初学者学习和了解画板的代码。基于MFC的画板制作具体代码,适合初学者学习和了解画板的代码。基于MFC的画板制作具体代码,适合初学者学习和了解画板的代码。
mfc制作的画板 源代码简单 适合初学者使用 观摩 学习 mfc制作的画板 源代码简单 适合初学者使用 观摩 学习
本程序为简易画板程序,主要解决画板的一些基本问题,并保持绘画的流畅。希望对新人有所帮助
使用MFC制作可以绘画矩形,椭圆,直线的图层画板,可以改变线条粗细和颜色,还可以填充颜色,可以拖动等等的mfc源码
电子画板,可以用鼠标随意画画、书写,可以回放画过的过程,适合做电子教学使用,是个人学习中制作的。
这是用C# GDI实现的简易画板Demo,对应博文http://blog.csdn.net/luols/article/details/7171668,有需要的朋友可以下载样例试用
不错的,看看吧!好好好好好,画板画板,画板画板
这是我初学qt编写的简易画板程序,程序结构和算法不算优秀,请多多指教
易语言简易画板源码,简易画板,公用接口_寻找文件扩展,公用接口_复制目录,公用接口_数组到表格,公用接口_生成编号,公用接口_生成密码,公用接口_时间到文本,公用接口_数据到十六进制文本,公用接口_十六进制文本到数据,...
这是用JavaScript技术和canvas接口写的在线画板,里面注释清楚,可以保存图片!
如何使用几何画板制作课件,一个完整的资料包,全面的很。
使用Android的自定义View写的Android画板程序,主要使用DrawPath()实现,需要的童鞋可以下来看看。
用VC开发工具编写的MFC简易画板,可以实现类似与windows自带画板的一些功能
提供源代码 直接可运行 提供了比较全面的画板功能
使用python做的一个简易画板,能够实现画点、画直线、画多边形、画椭圆等功能,其中包含了对Tkinter的操作以及对于GUI的操作,希望对python初学者能够有所帮助
用c#语言编写的简易画板程序,可以实现简易的绘画功能,可以绘制直线矩形…… 有参考一下别人的代码
js 使用canvas制作一个简易的画板