当前位置:文档之家› java2图形设计卷Ⅱ学习小结

java2图形设计卷Ⅱ学习小结

java2图形设计卷Ⅱ学习小结
java2图形设计卷Ⅱ学习小结

《java 2 图形设计卷Ⅱ》学习小结

4.轻量事件通知

由“模型”一节我们知道,模型能够提供轻量通知和状态通知两种通知。轻量通知使用一个只知道事件源的ChangeEvent(

变化事件),状态通知则使用提供有关变化的更多信息的事件。

变化事件由一些事件来处理,这些对象的类实现ChangeListener接口。接口总结3-1对ChangeListener接口进行了总结。

接口总结3-1 ChangeListener

public abstract void stateChanged (ChageEvent)

与大多数监听器一样,ChangeListener接口只定义了一个方法。StateChanged方法以ChangeEvent的一个实例作为参数。

类总结3-1中介绍了ChangeEvent类。

类总结3-1 ChangeEvent

扩展:java.util.EventObject

构造方法

public ChageEvent(Object source)

ChangeEvent类仅提供了一个构造方法,没有提供其他方法。ChangeEvent构造方法以事件源作为参数。

图3-9所示的小应用程序通过监控滑杆的值来说明轻量通知。一个变化监听器添加到这个小应用程序的滑杆中以获得滑杆

值并更新这个小应用程序的状态区。

图3-9轻量通知

例3-2列出了图3-9所示的小应用程序的代码

例3-2一个滑杆的轻量通知

import java.awt.*;

import javax.swing.*;

import javax.swing.event.*;

public class Test extends JApplet{

public void init(){

JSlider slider = new JSlider(0,100,50);

getContentPane().add(slider,BorderLayout.CENTER);

slider.addChangeListener(new ChangeListener(){

public void stateChanged(ChangeEvent e){

JSlider s = (JSlider) e.getSource();

showStatus(Integer.toString(s.getValue()));

}

});

}

}

5.状态事件通知

对不经常变化的模型属性,模型使用状态通知。状态通知激发所有类型的事件,并且提供比事件源更多信息(轻量事件通

知仅提供事件源一种信息)。例如,当选取或取消选取一个单选按钮时,按钮模型将激发一个项事件。

6.属性变化通知

当模型的关联属性变化时(当一个属性的变化激发一个属性变化事件,则这个属性称作关联属性。)模型会以一个

java.beans.PropertyChangeEvent的形式产生状态通知。属性变化通知由一些对象来处理,这些对象的类实现

java.beans.PropertyChangeListener接口,接口总结3-2中总结了这个接口。

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import java.beans.*;

public class Test extends JFrame {

JTree tree = new JTree();

public Test() {

Container contentPane = getContentPane();

JScrollPane scrollPane = new JScrollPane(tree);

contentPane.add(new ControlPanel(), BorderLayout.NORTH);

contentPane.add(scrollPane, BorderLayout.CENTER);

tree.addPropertyChangeListener(new PropertyListener());

}

class ControlPanel extends JPanel {

JCheckBox showRoot = new JCheckBox("show root node");

public ControlPanel() {

showRoot.setSelected(tree.isRootVisible());

setLayout(new FlowLayout());

add(showRoot);

showRoot.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

tree.setRootVisible(showRoot.isSelected());

}

});

}

}

class PropertyListener implements PropertyChangeListener {

public void propertyChange(PropertyChangeEvent e) { String name = e.getPropertyName();

if(name.equals(JTree.ROOT_VISIBLE_PROPERTY)) {

String msg = "Root Visible Property: " +

e.getNewValue().toString();

JOptionPane.showMessageDialog(

Test.this, // parent comp

msg, // message

"Property Change", // title

https://www.doczj.com/doc/89218567.html,RMA TION_MESSAGE);

}

}

}

例4-7 不容透明Swing组件

import javax.swing.*;

import java.awt.*;

public class OpaqueTest extends JApplet {

public void init() {

Container contentPane = getContentPane();

RainPanel rainPanel = new RainPanel();

ColoredPanel opaque = new ColoredPanel(),

transparent = new ColoredPanel();

// JComponents are opaque by default, so the opaque

// property only needs to be set for transparent

transparent.setOpaque(false);

rainPanel.add(opaque);

rainPanel.add(transparent);

contentPane.add(rainPanel, BorderLayout.CENTER);

System.out.println(opaque.isOpaque());

System.out.println(transparent.isOpaque());

}

}

class RainPanel extends JPanel {

ImageIcon rain = new ImageIcon(this.getClass().getResource("rain.gif")); private int rainw = rain.getIconWidth();

private int rainh = rain.getIconHeight();

public void paintComponent(Graphics g) {

Dimension size = getSize();

for(int row=0; row < size.height; row += rainh)

for(int col=0; col < size.width; col += rainw)

rain.paintIcon(this,g,col,row);

}

}

class ColoredPanel extends JPanel {

public void paintComponent(Graphics g) {

super.paintComponent(g);

Dimension size = getSize();

g.setColor(Color.black);

g.drawRect(0,0,size.width-1,size.height-1);

g.setColor(Color.red);

g.fillRect(size.width/2-25,size.height/2-25,50,50); }

public Dimension getPreferredSize() {

return new Dimension(100,100);

}

}

4.3.7 立即绘制Swing组件

例4-8 在事件处理方法中使用paintImmediately()

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class TestApplet extends JApplet {

public void init() {

Container contentPane = getContentPane();

final JPanel panel = new JPanel();

JButton button = new JButton("repaint");

panel.setBackground(Color.blue);

panel.setPreferredSize(new Dimension(100,100));

contentPane.setLayout(new FlowLayout()); contentPane.add(button);

contentPane.add(panel);

button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {

Color c = panel.getBackground();

Dimension sz = panel.getSize();

panel.setBackground(

c == Color.blue ? Color.re

d : Color.blue);

panel.paintImmediately(

0,0,sz.width,sz.height);

// for illustrative purposes only

try {

Thread.currentThread().sleep(5000);

}

catch(InterruptedException ex) {

ex.printStackTrace();

}

}

});

}

}

拖动图片效果

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

class AutoscrollViewport extends JViewport {

Point scrollTo = new Point(), last = new Point();

boolean manualDragUnderway = false;

final int increment;

public AutoscrollViewport(Component component, int inc) {

this.increment = inc;

setView(component);

setAutoscrolls(true);

setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {

last.x = e.getPoint().x;

last.y = e.getPoint().y;

manualDragUnderway = true;

}

});

addMouseMotionListener(new MouseMotionAdapter() {

public void mouseDragged(MouseEvent e) {

Point drag = e.getPoint();

Point viewPos = getViewPosition();

Point offset = new Point(drag.x - last.x,

drag.y - last.y);

last.x = drag.x;

last.y = drag.y;

if(contains(drag)) {

if(manualDragUnderway) {

scrollTo.x = viewPos.x - offset.x;

scrollTo.y = viewPos.y - offset.y;

setViewPosition(scrollTo);

}

}

else { // autoscrolling ...

Rectangle bounds = getBounds();

manualDragUnderway = false;

if(drag.x > bounds.x + bounds.width) {

// scroll right

viewPos.x -= increment;

setViewPosition(viewPos);

}

if(drag.x < 0) {

// scroll left

viewPos.x += increment;

setViewPosition(viewPos);

}

if(drag.y > bounds.y + bounds.height) {

// scroll down

viewPos.y -= increment;

setViewPosition(viewPos);

}

if(drag.y < 0) {

// scroll up

viewPos.y += increment;

setViewPosition(viewPos);

}

}

}

});

}

}

import javax.swing.*;

public class AutoscrollTest extends JFrame{

public AutoscrollTest() {

JLabel label = new JLabel(new ImageIcon("pic.gif"));

JViewport vp = new AutoscrollViewport(label, 3);

getContentPane().add(vp, "Center");

this.setVisible(true);

}

public static void main(String args[]){

new AutoscrollTest();

}

}

例4-21 用客户属性把一个动态目标分配给一个按钮

import javax.swing.*;

import java.util.*;

import java.awt.*;

import java.awt.event.*;

import java.beans.*;

public class ClientPropertiesTest extends JApplet {

JButton button = new JButton("toggle target color");

JComboBox targetCombo = new JComboBox();

JPanel[] targets = { new JPanel(),

new JPanel(),

new JPanel() };

public void init() {

Container contentPane = getContentPane();

Dimension targetPreferredSize = new Dimension(100,100);

JPanel targetPanel = new JPanel();

for(int i=0; i < targets.length; ++i) {

targets[i].setBackground(Color.blue);

targets[i].setPreferredSize(targetPreferredSize);

targetPanel.add(targets[i]);

}

targetCombo.addItem("left");

targetCombo.addItem("center");

targetCombo.addItem("right");

contentPane.setLayout(new FlowLayout());

contentPane.add(button);

contentPane.add(targetCombo);

contentPane.add(targetPanel);

button.putClientProperty("target", targets[0]);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

Component c =

(Component)button.getClientProperty("target");

if(c != null) {

Color bg = c.getBackground();

c.setBackground(bg == Color.blue ?

Color.red : Color.blue);

c.repaint();

}

}

});

targetCombo.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

button.putClientProperty(

"target",

targets[targetCombo.getSelectedIndex()]);

}

});

button.addPropertyChangeListener(

new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) {

if(e.getPropertyName().equals("target")) {

showStatus(

(String)targetCombo.getSelectedItem() +

" panel set as target");

}

}

});

}

public static void main(String args[]) {

final JFrame f = new JFrame();

JApplet applet = new ClientPropertiesTest();

applet.init();

f.setContentPane(applet.getContentPane());

f.setBounds(100,100,300,250);

f.setTitle("ClientPropertiesTest");

f.setVisible(true);

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

f.dispose();

System.exit(0);

}

});

}

}

class PanelWithTitle extends JPanel {

private String title;

public PanelWithTitle(String title) {

this.title = title;

}

public void paintComponent(Graphics g) {

FontMetrics fm = g.getFontMetrics();

Dimension size = getSize();

int titleW = fm.stringWidth(title);

g.setColor(Color.black);

g.drawString(title, size.width/2 - titleW/2,

size.height/2);

}

}

例5-6 使用定制边框

import java.awt.*;

import javax.swing.*;

import javax.swing.border.*;

public class HandleBorder extends AbstractBorder { protected Color lineColor;

protected int thick;

public HandleBorder() {

this(Color.black, 6);

}

public HandleBorder(Color lineColor, int thick) {

this.lineColor = lineColor;

this.thick = thick;

}

public void paintBorder(Component c, Graphics g, int x,

int y, int w, int h) {

Graphics copy = g.create();

if(copy != null) {

try {

copy.translate(x,y);

paintRectangle(c,copy,w,h);

paintHandles(c,copy,w,h);

}

finally {

copy.dispose();

}

}

}

public Insets getBorderInsets() {

return new Insets(thick,thick,thick,thick);

}

protected void paintRectangle(Component c, Graphics g,

int w, int h) {

g.setColor(lineColor);

g.drawRect(thick/2,thick/2,w-thick-1,h-thick-1);

//g.drawLine(w-thick,0,w-thick,h);

g.drawLine(0,20,w,20);

}

protected void paintHandles(Component c, Graphics g,

int w, int h) {

g.setColor(lineColor);

g.fillRect(0,0,thick,thick); // upper left

g.fillRect(w-thick,0,thick,thick); // upper right

g.fillRect(0,h-thick,thick,thick); // lower left

g.fillRect(w-thick,h-thick,thick,thick); // lower right

g.fillRect(w/2-thick/2,0,thick,thick); // mid top

g.fillRect(0,h/2-thick/2,thick,thick); // mid left

g.fillRect(w/2-thick/2,h-thick,thick,thick); // mid bottom

g.fillRect(w-thick,h/2-thick/2,thick,thick); // mid right

}

}

import javax.swing.*;

import javax.swing.border.*;

import java.awt.*;

import java.awt.event.*;

public class Test extends JApplet {

public void init() {

Container contentPane = getContentPane();

JPanel[] panels = { new JPanel(),

new JPanel(), new JPanel() };

Border[] borders = { new HandleBorder(),

new HandleBorder(Color.red, 8),

new HandleBorder(Color.blue, 10) };

contentPane.setLayout(

new FlowLayout(FlowLayout.CENTER,20,20));

for(int i=0; i < panels.length; ++i) {

panels[i].setPreferredSize(new Dimension(100,100));

panels[i].setBorder(borders[i]);

contentPane.add(panels[i]);

}

}

}

例5-8 ColorIcon类清单

import com.sun.java.swing.JApplet;

import java.awt.Color;

import java.awt.Graphics;

public class IconTest extends JApplet {

ColorIcon redIcon;

ColorIcon blueIcon;

ColorIcon yellowIcon;

public void paint(Graphics g) {

redIcon.paintIcon(this, g, 0, 0);

blueIcon.paintIcon(this, g, redIcon.getIconWidth() + 10, 0); yellowIcon.paintIcon(this, g, redIcon.getIconWidth() + 10 + blueIcon.getIconWidth() + 10, 0);

}

public IconTest() {

redIcon = new ColorIcon(Color.red, 50, 50);

blueIcon = new ColorIcon(Color.blue, 60, 60);

yellowIcon = new ColorIcon(Color.yellow, 70, 70);

}

}

import java.awt.*;

import javax.swing.*;

class ColorIcon implements Icon {

private Color fillColor;

private int w, h;

public ColorIcon(Color fillColor, int w, int h) {

this.fillColor = fillColor;

this.w = w;

this.h = h;

}

public void paintIcon(Component c, Graphics g, int x, int y) {

g.setColor(Color.black);

g.drawRect(x, y, w-1, h-1);

g.setColor(fillColor);

g.fillRect(x+1, y+1, w-2, h-2);

}

public int getIconWidth() {

return w;

}

public int getIconHeight() {

return h;

}

}

例5-9 菜单项中的图标

import java.awt.*;

import javax.swing.*;

class ColorIcon implements Icon {

private Color fillColor;

private int w, h;

public ColorIcon(Color fillColor, int w, int h) {

this.fillColor = fillColor;

this.w = w;

this.h = h;

}

public void paintIcon(Component c, Graphics g, int x, int y) {

g.setColor(Color.black);

g.drawRect(x, y, w-1, h-1);

g.setColor(fillColor);

g.fillRect(x+1, y+1, w-2, h-2);

}

public int getIconWidth() {

return w;

}

public int getIconHeight() {

return h;

}

}

import java.awt.*;

import javax.swing.*;

public class Test extends JApplet {

ColorIcon redIcon = new ColorIcon(Color.red, 40, 15),

blueIcon = new ColorIcon(Color.blue, 40, 15),

yellowIcon = new ColorIcon(Color.yellow, 40, 15);

public void init() {

JMenuBar mb = new JMenuBar();

JMenu colors = new JMenu("Colors");

colors.add(new JMenuItem(redIcon));

colors.add(new JMenuItem(blueIcon));

colors.add(new JMenuItem(yellowIcon));

mb.add(colors);

setJMenuBar(mb);

}

}

例5-11 在许多组件中共享单图标的小应用程序

import java.awt.*;

import javax.swing.*;

public class ColorIcon implements Icon {

private int w, h;

public ColorIcon(int w, int h) {

this.w = w;

this.h = h;

}

public void paintIcon(Component c, Graphics g, int x, int y) { Color fillColor = Color.lightGray;

g.setColor(Color.black);

g.drawRect(x, y, w-1, h-1);

if(c instanceof JComponent) {

JComponent jc = (JComponent)c;

fillColor = (Color)jc.getClientProperty("fill color");

}

g.setColor(fillColor);

g.fillRect(x+1, y+1, w-2, h-2);

}

public int getIconWidth() {

return w;

}

public int getIconHeight() {

return h;

}

}

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Test extends JApplet {

private ColorIcon colorIcon = new ColorIcon(40, 15);

private JPopupMenu popup = new JPopupMenu();

private JButton button = new JButton("select a color ...",

colorIcon);

public void init() {

addPopupMenuItems();

button.putClientProperty("fill color", Color.red);

Container contentPane = getContentPane();

contentPane.setLayout(new FlowLayout());

contentPane.add(button);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

Dimension buttonsz = button.getSize();

popup.show(button,buttonsz.width,

buttonsz.height);

}

});

}

private void addPopupMenuItems() {

JMenuItem redItem = new JMenuItem(colorIcon),

blueItem = new JMenuItem(colorIcon),

grayItem = new JMenuItem(colorIcon),

yellowItem = new JMenuItem(colorIcon),

blackItem = new JMenuItem(colorIcon),

whiteItem = new JMenuItem(colorIcon),

orangeItem = new JMenuItem(colorIcon);

MenuItemListener listener = new MenuItemListener();

redItem.putClientProperty("fill color", Color.red);

redItem.addActionListener(listener);

popup.add(redItem);

blueItem.putClientProperty("fill color", Color.blue);

blueItem.addActionListener(listener);

popup.add(blueItem);

grayItem.putClientProperty("fill color", Color.gray);

grayItem.addActionListener(listener);

popup.add(grayItem);

yellowItem.putClientProperty("fill color", Color.yellow);

yellowItem.addActionListener(listener);

popup.add(yellowItem);

blackItem.putClientProperty("fill color", Color.black);

blackItem.addActionListener(listener);

popup.add(blackItem);

whiteItem.putClientProperty("fill color", Color.white);

whiteItem.addActionListener(listener);

popup.add(whiteItem);

orangeItem.putClientProperty("fill color", Color.orange);

orangeItem.addActionListener(listener);

popup.add(orangeItem);

}

class MenuItemListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

JComponent jc = (JComponent)e.getSource();

button.putClientProperty("fill color",

jc.getClientProperty("fill color"));

button.repaint();

}

}

}

import java.awt.*;

import javax.swing.*;

Java课程设计实验报告及全部源码流程图

课程设计 一、实验目的 1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。 2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。 3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。 二、实验要求 1.问题描述准确、规范。 2.程序结构合理,调试数据准确、有代表性.。 3.界面布局整齐,人机交互方便。 4.输出结果正确。 5.正确撰写实验报告。 三、实验内容 编写一个GUI程序实现日历的功能。一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。可以实现显示时钟,时钟能进行整点报

时。可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。 四、实验步骤 1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。 2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。 3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。 4. 根据实验结果,写出合肥工业大学实验报告。实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。 5.详细的上机实验步骤见任务分工及程序设计进度表。 五、实验结果 经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。另外,在完成基本要求的基础上,我们增添了显示农历、显示时钟、添加备忘录、修改备忘录等功能。整体程序运行流畅、功能齐全、符合操作习惯。 下面是程序运行效果截图: 日历主界面(可以实现每个月的日历,可以按年或按月前后翻动,能够显示当前日期,并能够选择背景图片):

数字图像处理课程心得

数字图像处理课程心得 本学期,我有幸学习了数字图像处理这门课程,这也是我大学学习中的最后一门课程,因此这门课有着特殊的意义。人类传递信息的主要媒介是语音和图像。据统计,在人类接受的信息中,听觉信息占20%,视觉信息占60%,其它如味觉、触觉、嗅觉信息总的加起来不过占20%。可见图像信息是十分重要的。通过十二周的努力学习,我深刻认识到数字图像处理对于我的专业能力提升有着比较重要的作用,我们可以运用Matlab对图像信息进行加工,从而满足了我们的心理、视觉或者应用的需求,达到所需图像效果。 数字图像处理起源于20世纪20年代,当时通过海底电缆从英国伦敦到美国纽约采用数字压缩技术传输了第一幅数字照片。此后,由于遥感等领域的应用,使得图像处理技术逐步受到关注并得到了相应的发展。第三代计算机问世后,数字图像处理便开始迅速发展并得到普遍应用。由于CT的发明、应用及获得了备受科技界瞩目的诺贝尔奖,使得数字图像处理技术大放异彩。目前数字图像处理科学已成为工程学、计算机科学、信息科学、统计学、物理、化学、生物学、医学甚至社会科学等领域中各学科之间学习和研究的对象。随着信息高速公路、数字地球概念的提出以及Internet的广泛应用,数字图像处理技术的需求与日俱增。其中,图像信息以其信息量大、传输速度快、作用距离远等一系列优点成为人类获取信息的重要来源及利用信息的重要手段,因此图像处理科学与技术逐步向其他学科领域渗透并为其它学科所利用是必然的。 数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。图像处理科学是一门与国计民生紧密相联的应用科学,它给人类带来了巨大的经济和社会效益,不久的将来它不仅在理论上会有更深入的发展,在应用上亦是科学研究、社会生产乃至人类生活中不可缺少的强有力的工具。它的发展及应用与我国的现代化建设联系之密切、影响之深远是不可估量的。在信息社会中,数字图象处理科学无论是在理论上还是在实践中都存在着巨大的潜力。近几十年,数字图像处理技术在数字信号处理技术和计算机技术发展的推动下得到了飞速的发展,正逐渐成为其他科学技术领域中不可缺少的一项重要工具。数字图像处理的应用领域越来越广泛,从空间探索到微观研究,从军事领域到工农业生产,从科学教育到娱乐游戏,越来越多的领域用到了数字图像处理技术。 虽然通过一学期的课程学习我们还没有完全掌握数字图像处理技术,但也收获了不少,对于数字图像处理方面的知识有了比较深入的了解,当然也更加理解了数字图像的本质,即是一些数字矩阵,但灰度图像和彩色图像的矩阵形式是不同的。对于一些耳熟能详的数字图像相关术语有了明确的认识,比如常见的:像素(衡量图像的大小)、分辨率(衡量图像的清晰程度)、位图(放大后会失真)、矢量图(经过放大不会失真)等大家都能叫上口却知识模糊的名词。也了解图像处理技术中一些常用处理技术的实质,比如锐化处理是使模糊的图像变清晰,增强图像的边缘等细节。而平滑处理是的目的是消除噪声,模糊图像,在提取大目标之前去除小的细节或弥合目标间的缝隙。对常提的RGB图像和灰度图像有了明确的理解,这对大家以后应用Photoshop等图像处理软件对图像进行处理打下了

图形创意课程介绍

图形创意课程介绍

电脑艺术设计、艺术设计专业《图形创意》课程说明 图形创意课程代码:020232[0] 课程内容介绍: 本课程是高等院校艺术设计专业的一门基础课,也是高职艺术设计、电脑艺术设计专业的一门专业基础课。本课程的教学内容包括图形创意的概述、图形创意的构成形式、图形创意的程序、图形创意的方法、图形创意的应用五个部分,各部分的主要内容和要求如下: 图形创意的概述包括图形的基本概念、图形创意与现代绘画艺术。图形创意的构成形式包括异影图形、共生图形、换置图形、延异图形、茅盾图形、文字图形。图形创意的程序包括研究设计任务、确定主题思想、选取设计素材、安排图形结构、选择表现手法。图形创意的方法包括逻辑思维与形象思维、意象、联想、想象、意与形的沟通、解构、同构、重构。图形创意的应用包括平面设计中的应用、向三维领域的拓展。 教学目的与要求: 图形创意课程的设置旨在通过图形的创意过程培养学生的创造性思维能力。本课程的第一阶段旨在培养学生从新的角度观察、认识、理解熟悉的事物,并准确地运用图形创意的基本语言表现这些事物。第二阶段旨在培养学生从多元素、多维空间角度去认识熟悉的事物,用平面的形式在多维空间中进行表现。要求学生了解当代图形创意设计的材料、工艺,掌握图形创意的构成要

素、设计原则、设计观念、工艺流程等基本理论知识;掌握图形的功能、审美要求、创意方法及技巧;全面培养学生把创意转变为作品的操作能力。 具体要求是:准确地运用图形创意的基本语言表现这些事物。第二阶段旨在培养学生从多元素、多维空间角度去认识熟悉的事物,用平面的形式在多维空间中进行表现。 知识结构: 掌握视觉语言的表达,图形创意的思维模式;多元图形语言的基本形式。图形创意的思维模式,多维空间中创意图形的表示与表达。以崭新的思维方式来看待事物,准确地掌握运用图形创意的基本语言来表现事物、思想与情感。 能力结构: 了解图形创意设计的基本原理,全面理解图形的基本结构要素、具象、抽象及组合;掌握设计的材料;熟练掌握命题、创意、搜集素材、手绘、电脑设计等图形创意设计的全过程。能够熟练运用计算机辅助设计软件进行图形创意设计实践。通过设计制作的实践过程,加深学生对该课程内容的理解与把握,使学生审美意识得以提升,创造性思维得以启发。 教学方法及手段: 本课程的教学主要以现代多媒体教学和传统的课堂讲授相结合,讲课中注重发挥学生的积极主动性,教学相长。学生进行图形创意作业练习,教师通过单独指导和点评优秀作品的方式,

java课程设计报告材料-俄罗斯方块

JAVA程序设计课程设计 之 俄罗斯方块 年级:13级 班级:T412 网络工程 指导老师:朱林 小组成员: 20138346021 许浩洋

时间:2015年11月11日 目录 摘要................................................................. 第一章课程设计要求.................................................. 第二章设计概要...................................................... 2.1 功能设计...................................................... 2.2 功能分析...................................................... 2.2.1 系统操作界面............................................... 2.2.2 程序主要功能说明........................................... 第三章调试分析与测试结果............................................ 3.1 游戏运行界面.................................................. 3.2 测试项目...................................................... 3.2.1 功能区按键测试............................................ 3.2.2 键盘功能测试.............................................. 3.2.3 游戏结束测试.............................................. 第四章设计总结...................................................... 4.1 改进意见...................................................... 4.2 《Java课程设计》心得体会 ......................................

数字图像处理 课程设计报告

数字图像处理 课程设计报告 姓名: 学号: 班级: 设计题目:图像处理 教师:赵哲老师 提交日期: 12月29日

一、设计内容: 主题:《图像处理》 详细说明:对图像进行处理(简单滤镜,模糊,锐化,高斯模糊等),对图像进行处理(上下对称,左右对称,单双色显示,亮暗程度调整等),对图像进行特效处理(反色,实色混合,色彩平衡,浮雕效果,素描效果,雾化效果等), 二、涉及知识内容: 1、二值化 2、各种滤波 3、算法等 三、设计流程图 四、实例分析及截图效果: 运行效果截图: 第一步:读取原图,并显示 close all;clear;clc; % 清楚工作窗口clc 清空变量clear 关闭打开的窗口close all I=imread(''); % 插入图片赋给I imshow(I);% 输出图I I1=rgb2gray(I);%图片变灰度图 figure%新建窗口 subplot(321);% 3行2列第一幅图 imhist(I1);%输出图片

title('原图直方图');%图片名称 一,图像处理模糊 H=fspecial('motion',40); %% 滤波算子模糊程度40 motion运动 q=imfilter(I,H,'replicate');%imfilter实现线性空间滤波函数,I图经过H滤波处理,replicate反复复制q1=rgb2gray(q); imhist(q1); title('模糊图直方图'); 二,图像处理锐化 H=fspecial('unsharp');%锐化滤波算子,unsharp不清晰的 qq=imfilter(I,H,'replicate'); qq1=rgb2gray(qq); imhist(qq1); title('锐化图直方图'); 三,图像处理浮雕(来源网络) %浮雕图 l=imread(''); f0=rgb2gray(l);%变灰度图 f1=imnoise(f0,'speckle',; %高斯噪声加入密度为的高斯乘性噪声 imnoise噪声污染图像函数 speckle斑点 f1=im2double(f1);%把图像数据类型转换为双精度浮点类型 h3=1/9.*[1 1 1;1 1 1;1 1 1]; %采用h3对图像f2进行卷积滤波 f4=conv2(f1,h3,'same'); %进行sobel滤波 h2=fspecial('sobel'); g3=filter2(h2,f1,'same');%卷积和多项式相乘 same相同的 k=mat2gray(g3);% 实现图像矩阵的归一化操作 四,图像处理素描(来源网络) f=imread(''); [VG,A,PPG] = colorgrad(f); ppg = im2uint8(PPG); ppgf = 255 - ppg; [M,N] = size(ppgf);T=200; ppgf1 = zeros(M,N); for ii = 1:M for jj = 1:N if ppgf(ii,jj)

数字图像处理的概念教学总结

数字图像处理的概念

二、数字图像处理的概念 1.什么是图像 “图”是物体投射或反射光的分布,“像”是人的视觉系统对图的接受在大脑中形成的印象或反映。 是客观和主观的结合。 2数字图像是指由被称作象素的小块区域组成的二维矩阵。将 物理图象行列划分后,每个小块区域称为像素(pixel)。 –每个像素包括两个属性:位置和灰度。 对于单色即灰度图像而言,每个象素的亮度用一个数值来表示,通常数值范围在0到255之间,即可用一个字节来表示, 0表示黑、255表示白,而其它表示灰度级别。 物理图象及对应 的数字图象 3彩色图象可以用红、绿、蓝三元组的二维矩阵来表示。 –通常,三元组的每个数值也是在0到255之间,0表示相应的基色在该象素中没有,而255则代表相应的基色在该象素中取得最大值,这种情况下每个象素可用三个字节来表示。 4什么是数字图像处理 数字图像处理就是利用计算机系统对数字图像进行各种目的的处理 5对连续图像f(x,y)进行数字化:空间上,图像抽样;幅度上,灰度级量化 x方向,抽样M行 y方向,每行抽样N点

整个图像共抽样M×N个像素点 一般取M=N=2n=64,128,256,512,1024,2048 6数字图像常用矩阵来表示: f(i,j)=0~255,灰度级为256,设灰度量化为8bit 7 数字图像处理的三个层次 8 图像处理: 对图像进行各种加工,以改善图像的视觉效果;强调图像之间进行的变换;图像处理是一个从图像到图像的过程。 9图像分析:对图像中感兴趣的目标进行提取和分割,获得目标的客观信息 以观察者为中心研究客观世界; 图像分析是一个从图像到数据的过程。 10图像理解:研究图像中各目标的性质和它们之间的相互联系;得出对图像内 以客观世界为中心,借助知识、经验来推理、认识客观世界,属于高层操作 (符号运算) N N N N f N f N f N f f f N f f f y x f ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - = )1 ,1 ( )1,1 ( )0,1 ( )1 ,1( )1,1( )0,1( )1 ,0( )1,0( )0,0( ) ,( 符号 目标 像素 高层 中层 低层 高 低 抽 象 程 度 数 据 量 操 作 对 象 小 大语 义

图形创意课程介绍

电脑艺术设计、艺术设计专业《图形创意》课程说明 图形创意课程代码:020232[0] 课程内容介绍: 本课程是高等院校艺术设计专业的一门基础课,也是高职艺术设计、电脑艺术设计专业的一门专业基础课。本课程的教学内容包括图形创意的概述、图形创意的构成形式、图形创意的程序、图形创意的方法、图形创意的应用五个部分,各部分的主要内容和要求如下: 图形创意的概述包括图形的基本概念、图形创意与现代绘画艺术。图形创意的构成形式包括异影图形、共生图形、换置图形、延异图形、茅盾图形、文字图形。图形创意的程序包括研究设计任务、确定主题思想、选取设计素材、安排图形结构、选择表现手法。图形创意的方法包括逻辑思维与形象思维、意象、联想、想象、意与形的沟通、解构、同构、重构。图形创意的应用包括平面设计中的应用、向三维领域的拓展。 教学目的与要求: 图形创意课程的设置旨在通过图形的创意过程培养学生的创造性思维能力。本课程的第一阶段旨在培养学生从新的角度观察、认识、理解熟悉的事物,并准确地运用图形创意的基本语言表现这些事物。第二阶段旨在培养学生从多元素、多维空间角度去认识熟悉的事物,用平面的形式在多维空间中进行表现。要求学生了解当代图形创意设计的材料、工艺,掌握图形创意的构成要

素、设计原则、设计观念、工艺流程等基本理论知识;掌握图形的功能、审美要求、创意方法及技巧;全面培养学生把创意转变为作品的操作能力。 具体要求是:准确地运用图形创意的基本语言表现这些事物。第二阶段旨在培养学生从多元素、多维空间角度去认识熟悉的事物,用平面的形式在多维空间中进行表现。 知识结构: 掌握视觉语言的表达,图形创意的思维模式;多元图形语言的基本形式。图形创意的思维模式,多维空间中创意图形的表示与表达。以崭新的思维方式来看待事物,准确地掌握运用图形创意的基本语言来表现事物、思想与情感。 能力结构: 了解图形创意设计的基本原理,全面理解图形的基本结构要素、具象、抽象及组合;掌握设计的材料;熟练掌握命题、创意、搜集素材、手绘、电脑设计等图形创意设计的全过程。能够熟练运用计算机辅助设计软件进行图形创意设计实践。通过设计制作的实践过程,加深学生对该课程内容的理解与把握,使学生审美意识得以提升,创造性思维得以启发。 教学方法及手段: 本课程的教学主要以现代多媒体教学和传统的课堂讲授相结合,讲课中注重发挥学生的积极主动性,教学相长。学生进行图形创意作业练习,教师通过单独指导和点评优秀作品的方式,

Java课程设计--文本编辑器

淮 海 工 学 院 计算机工程学院
课程设计报告
设计名称: 选题名称: 姓 名: 专业班级: 系 (院): 设计时间: 设计地点:
面向对象课程设计
文本编辑器的设计与实现
俞凯 学 号: 中新软 111 国际学院
2013.6.17~2013.6.30 软件实验室、教室
指导教师评语:
成绩:
签名:
年月日
在各种埋地管道的应用过程中,能否达到规定长期使寿命一个关键因素就是铺设质量。而HDPE具有多独特性更加安全

1.课程设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较 全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用 Java 语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生 的应用能力。
2.课程设计任务与要求:
2.1 文本编辑器的设计与实现:
设计一个类似于 Windows 记事本(Notepad)的 Java 程序。可以打开、新建、保存一个文本文件;对选中的文 本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等); 在文本中能够插入对象。
2.2 设计要求:
课程设计可选用 Eclipse、JBuilder、NetBeans 等作为开发平台以提高开发效率,通过资料查阅和学习尽可 能熟练掌握其中一种集成开发环境。
认真完成需求分析,建议采用 UML 建模技术进行系统的分析设计,在画出系统用例图和类图,并将 UML 图复 制到设计报告中。认真按时完成课程设计报告,课程设计报告内容包括:课程设计目的、设计任务与要求、设计 说明书、设计成果和设计心得五个部分,具体要求见设计报告模板。
通过这次设计,要求掌握以下内容: 1) 面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用 2) 类、包、接口的定义与使用 3) 常用工具类与算法的实现(数组、向量、字符串、链表) 4) java.awt、javax.swing 中常用标准 GUI 组件及相应的事件处理 5) Java 的异常处理机制 6) Java 的数据库连接技术 7) Java 的多线程技术与动画制作 8) Java 的网络编程
在各种埋地管道的应用过程中,能否达到规定长期使寿命一个关键因素就是铺设质量。而HDPE具有多独特性更加安全

数字图像处理

院系:计算机科学学院 专业:计算机科学与技术 年级: 09级 课程名称:数字图像处理 组号: 25组 指导教师:孙阳光 学号: 姓名: 2012 年 6 月 13 日

年 级 班号学号 专 业 姓名实 验名称MATLAB图像处理编程基础 实验 类型 设计型综合型创新型 √ 实验目的或要求加深对数字图像处理理论课程的理解,进一步熟悉数字图像处理课程的相关算法和原理选择一副图像,叠加椒盐噪声,分别用邻域平均法和中值滤波法对该图像进行滤波,显示滤波后的图像,比较和分析各滤波器的效果。 选择一副图像,叠加零均值高斯噪声,设计一种处理方法,既能去噪声,又能保持边缘清晰。

实验原理(算法流程图或者含注释的源代码)二、算法原理 平滑滤波器用滤波模板确定的领域内象素的平均灰度值去代替图像中的每一个像素点的值,这种处理减少了图像灰度的“尖锐”变化,常称为邻域平均法。邻域平均法有力地抑制了噪声,同时也引起了模糊,模糊程度与邻域半径成正比。 中值滤波法是一种非线性平滑技术,它将每一象素点的灰度值设置为该点某邻域窗口内的所有象素点灰度值的中值.中值滤波法对消除椒盐噪音非常有效。 图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,这就需要利用图像锐化技术,使图像的边缘变的清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变的清晰。 三、Matlab代码 1: I = imread('eight.tif'); J = imnoise(I,'salt & pepper',0.02); subplot(231); imshow(I);title('原图象'); subplot(232); imshow(J);title('添加椒盐噪声图象'); k1 = filter2(fspecial('average', 3), J); k2 = filter2(fspecial('average', 5), J); k3 = filter2(fspecial('average', 7), J); k4 = filter2(fspecial('average', 9), J); subplot(233); imshow(uint8(k1));title('3×3模板平滑滤波'); subplot(234); imshow(uint8(k2));title('5×5模板平滑滤波'); subplot(235); imshow(uint8(k3));title('7×7模板平滑滤波'); subplot(236); imshow(uint8(k4));title('9×9模板平滑滤波'); I = imread('eight.tif'); J = imnoise(I,'salt & pepper',0.02); subplot(231); imshow(I);title('原图象'); subplot(232); imshow(J);title('添加椒盐噪声图象'); k1 = medfilt2(J); k2 = medfilt2(J,[5,5]); k3 = medfilt2(J,[7,7]); k4 = medfilt2(J,[9,9]); subplot(233); imshow(k1);title('3×3模板中值滤波'); subplot(234); imshow(k2);title('5×5模板中值滤波'); subplot(235); imshow(k3);title('7×7模板中值滤波'); subplot(236); imshow(k4);title('9×9模板中值滤波');

Java课程设计报告

湖北大学 本科课程设计 题目 ATM 自助机模拟程序姓名 学号 专业年级 指导教师 职称

目录 第一章系统描述 (2) 1 前言 (2) 2 系统功能需求 (2) 第二章系统分析与设计 (3) 1 功能模块划分 (3) 2 功能模块的描述 (3) 3 系统设计流程图 (4) 4 测试数据及期望结果 (6) 第三章系统详细设计 (7) 1 主界面开发设计 (7) 2 功能选择界面开发设计 (7) 3 取款界面开发设计 (7) 4 存款界面开发设计 (8) 5 转账界面开发设计 (8) 6 查询界面开发设计 (9) 7 修改密码界面开发设计 (9) 8 界面开发设计使用函数 (9) 第四章系统测试 (11) 第五章源程序部分清单 (21) 第六章实验心得 (30) 参考文献 (31)

第一章系统描述 1 前言 Java技术是一门简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言,它也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。Java编程语言与众不同之处在于:Java程序既是编译型的,又是解释型的。 Java平台是一种纯软件平台,它有三个版本Java SE、Java EE、Java ME。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 本课程设计采用Eclipse作为开发工具,并采用Window Builder下的SWT Designer来实现相应的功能。着重通过模拟实现当前非常快捷又使用的ATM机来加深对java开发设计的了解,从而进一步提高自己对java图像界面的设计及相关知识的认识。 2 系统功能需求 当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM 柜员机系统,用户可以按照以下规则进行: (1)查询余额:初始余额为10000元。 (2)ATM取款:每次取款金额为100的倍数,一次取款不能超过1000,总额不 超过5000元,支取金额不允许透支,有快捷取款和用户自定义取款。 (3)ATM存款:每次存款金额为100的倍数,一次存款不能超过1000,不能出 现负存款。 (4)ATM转账:只有在两次输入账号相同且输入转账金额正确的情况下才允许 转账,不允许透支。 (5)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只 有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

上数字图像处理技术的心得

上数字图像处理技术的心得我一直对PS挺感兴趣的,虽然我去图书馆借了许多书,可是有很多地方解释不清楚也没有素材,我都快崩溃了。单我发现这门课立即就报了它。我的最初目的不是要去学数字图像处理技术,而是冲着学photoshop去的。 刚开始上第一节课时,老师您并没有讲PS,而是讲一些关于数字图像处理技术的原理知识。我本以为我可能不会喜欢这种类型的课。但是出于一个理科生的本能反应,我挺喜欢这些内容。我发觉我的几个选修都正好符合我的兴趣爱好。我第一次接触数字图像处理技术,才知道图像的原理竟然一些数字矩阵。不愧叫数字图像处理技术。 但老师开始讲PS的时候,我自然是更加高兴了。因为这是我主要的学习目的。图像处理技术只是碰巧撞上。说实话,我对PS上的一些工具及使用方法还不是很了解。老师能从基本知识讲起正和我心意。虽然有很多我以前都会了。 我现在来讲讲我从在这门选修课中学到最主要的两项知识。 其一就是老师最希望我们了解的数字图像处理技术。我们现在都知道一张像数码相机照出来的照片(数字图像)是由一大堆数字矩阵组成。黑白与彩色图像的矩阵又有一些不同。老师用北京邮电大学的那个软件给我们演示一下PS里面的图像处理原理是怎样形成的。比如模糊,锐化等等。还有很多的图像处理通过PS来说明解释。后面主要就是介绍压缩技术。当然也涉及到一些视频音频的压缩。图像

压缩老师您也介绍了很多不同的方法。可我想不起来了,但是起码我们知道了它的压缩原理。知道原图像与压缩后所占存储量的巨大差异。我在这里也和老师一样用画图做一个。有一点失真,这就是有损压缩。 另外那个无损压缩从视觉上是抗不出来的,就不用做了。 其二,就是在photosop的操作上。老师您举了许许多多的操作例子来提高我们对数字图像处理技术的兴趣,尤其是在图层和滤镜的学习,我都学到很多在书上看不懂的方法技能。下面我也简简单单做一张,就当做是作业来完成吧! 如下三张图:通过第一张图中草地,山与第二张的天空合成第三张图。

数字图像处理心得体会

《数字图像处理》心得体会 图像处理是指对图像信息进行加工,从而满足人类的心理、视觉或者应用的需求的一种行为。图像处理方法一般有数字法和光学法两种,其中数字法的优势很明显,已经被应用到了很多领域中,相信随着科学技术的发展,其应用空间将会更加广泛。数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理是从20世纪60年代以来随着计算机技术和VLSL的发展而产生、发展和不断成熟起来的一个新兴技术领域。数字图像处理技术其实就是利用各种数字硬件与计算机,对图像信息通过转换而得到的电信号进行相应的数学运算,例如图像去噪、图像分割、提取特征、图像增强、图像复原等,以便提高图像的实用性。其特点是处理精度比较高,并且能够对处理软件进行改进来优化处理效果,操作比较方便,但是由于数字图像需要处理的数据量一般很大,因此处理速度有待提高。 由于数字图像处理的方便性和灵活性,因此数字图像处理技术已经成为了图像处理领域中的主流。数字图像处理技术主要涉及到的关键技术有:图像的采集与数字化、图像的编码、图像的增强、图像恢复、图像分割、图像分析等。? 图像的采集与数字化:就是通过量化和取样将一个自然图像转换为计算机能够处理的数字形式。? 图像编码:图像编码的目的主要是来压缩图像的信息量,以便能够满足存储和传输的要求。? 图像的增强:图像的增强其主要目的是使图像变得清晰或者将其变换为机器能够很容易分析的形式,图像增强方法一般有:直方图处理、灰度等级、伪彩色处理、边缘锐化、干扰抵制。?

图像的恢复:图像恢复的目的是减少或除去在获得图像的过程中因为各种原因而产生的退化,可能是由于光学系统的离焦或像差、被摄物与摄像系统两者之间的相对运动、光学或电子系统的噪声与介于被摄像物跟摄像系统之间的大气湍流等等。? 图像的分割:图像分割是将图像划分为一些互相不重叠的区域,其中每一个区域都是像素的一个连续集,通常采用区域法或者寻求区域边界的境界法。? 图像分析:图像分析是指从图像中抽取某些有用的信息、数据或度量,其目的主要是想得到某种数值结果。图像分析的内容跟人工智能、模式识别的研究领域有一定的交叉。? 数字图像处理的特点主要表现在以下几个方面:? 1)?数字图像处理的信息大多是二维信息,处理信息量很大。因此对计算机的计算速度、存储容量等要求较高。? 2)?数字图像处理占用的频带较宽。与语言信息相比,占用的频带要大几个数量级。所以在成像、传输、存储、处理、显示等各个环节的实现上技术难度较大,成本亦高。这就对频带压缩技术提出了更高的要求。? 3)?数字图像中各个像素不是独立的,其相关性大。在图像画面上,经常有很多像素有相同或接近的灰度。所以,图像处理中信息压缩的潜力很大。?图像受人的因素影响较大,因为图像一般是给人观察和评价的。? 数字图像处理的优点主要表现在4个方面。? 1)?再现性好。数字图像处理与模拟图像处理的根本不同在于它不会因图像的存储、传输或复制等一系列变换操作而导致图像质量的退化。只要图像在数字化时准确地表现了原稿,那么数字图像处理过程始终能保持图像的再现。? 2)?处理精度高。将一幅模拟图像数字化为任意大小的二维数组,主要取决于

仿windows JAVA 课程设计 记事本

前言 随时着科学技术的快速发展,计算机程序设计早已成为了趋势,JAVA是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。JAVA是实践性很强的课程。课程设计是加强实践能力的一个强有力手段。要求掌握JAVA的应用、编写、上机调试的基本方法。本课程设计就是主要利用java语言编写的一个模仿windows 记事本的较简单的程序,实现了一些基本功能,要求打开文件,读取文件中的文本信息;显示、编辑修改文本信息;实现输入文本文件、控制保存文本信息到指定的文件的功能。 目录 一、需求分析 (1) 二、概要设计 (1) 三、详细设计 (2) 四、系统调试分析 (6) 五、课程设计心得体会 (7) 六、使用说明 (7) 七、参考文献及致 (7) 八、附录(程序源代码) (7)

一、需求分析 该课程设计报告里的简易记事本程序是使用Java程序设计语言编写的,要现记事本的基本功能,参考了windows中记事本的一些功能。要求打开文件,读取文件中的文本信息;显示、编辑修改文本信息;实现新建、打开、保存文本文件以及控制保存文本信息到指定的文件的一些基本功能。 二、概要设计 1.1 系统主要功能 本程序是利用java程序设计语言编写的一个简单的记事本程序。可以通过菜单栏和工具栏实现以下功能:如文件的新建,打开,保存和退出;对文件的编辑,如复制,剪切,粘贴;以及帮助菜单;执行完操作后,能够顺利关闭记事本。 1.2运行环境要求 (1) 实现设计的系统硬件需求 硬件配置的基本要求: * 586以上的计算机 * 32MB以上的存 * 彩色显示器 * 3.5寸高密软盘驱动器 * 光盘驱动器 * 4G以上硬盘空间 * 鼠标 (2) 实现设计的系统软件 * WINDOWS95或WINDOWS98 * Jcreator Pro全套软件 三、详细设计 设计思路:设计一个EditorDemo类,继承自JFrame类,并在EditorDemo类利用JtextPane 创建面板窗口textPane,利用Jlabel创建状态栏 statusBar,利用JFileChooser 创建文件选择器filechooser,利用JMenuBar创建并实例化菜单栏,利用JToolBar创建工具栏,再通过一些具体方法实现各功能键的功能。建立构造函数public EditorDemo();通过该构造函数实现记事本程序的主要功能,运行时在主类过调用该构造函数来实现对记事本程序的基本操作。 1:窗口设计 在主接口中设计一个EditorDemo容器继承自JFrame,并在其中加入菜单栏、工具栏和一个文本域控件。

武汉大学数字图像处理课程综合实习实习报告

数字图像处理课程综合实习 实习报告 学院 班级 学号 姓名 日期 指导教师

一、实习目的和意义 本实习内容旨在让同学们通过用VC等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。为学生进一步学习数字摄影测量、遥感和地理信息系统等专业课程以及应用图像处理解决实际问题奠定基础。 二、实习原理和方法 实习一实现RAW->BMP格式的转换 RAW格式:文件按照数字图像组成的二维矩阵,将像素按行列号顺序存储在文件中。这种文件只含有图像像素数据,不含有信息头,因此,在读图像时,需要根据文件大小,计算图像所包含的行列号,或者需要事先知道图像大小(矩阵大小)。但这种文件读取和保存简单。 RAW文件按图像上行到下行、左列到右列顺序存储,而BMP文件数据区按图像上下行到上行、左列列到右列顺序存储到数据区。 实现RAW文件到BMP文件的转换,需要为BMP文件生成文件头、信息头、颜色表、数据区,将RAW文件数据区赋值到BMP文件数据区。 实习二灰度线性变换 点运算是指像素值(即像素点上的灰度值)通过运算改变之后,可以改善图象的显示效果。这是一种像素的逐点运算,是旧图象与新图象之间的映射关系,是一种简单但却十分有效的一种图象处理手段。常用方法有灰度线性变换、直方图均衡、对比度调整、直方图规定化、对数变换、指数变换、密度分割等方法。 灰度的线性变换就是指图像的中所有点的灰度按照线性灰度变换函数进行变换。灰度变换方程如下: D0=f(Di)=a*Di+b 该方程为线性方程。式中参数Di为输入图像的像素的灰度值,参数D0为输出图像的灰度,a和b由给定条件确定。 实习三图像局部处理:高通滤波和低通滤波

《数字图像处理》课程学习心得

《数字图像处理》课程学习心得 导读:本文《数字图像处理》课程学习心得,仅供参考,如果能帮助到您,欢迎点评和分享。 《数字图像处理》课程学习心得(一) 在这一学期,我选修了《数字图像处理基础》这门课程,同时,老师还讲授了一些视频处理的知识。在这里,梳理一下这学期学到的知识,并提出一些我对这门课程的建议。 图像处理是指对图像信息进行加工,从而满足人类的心理、视觉或者应用的需求的一种行为。图像处理方法一般有数字法和光学法两种,其中数字法的优势很明显,已经被应用到了很多领域中,相信随着科学技术的发展,其应用空间将会更加广泛。数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理是从20世纪60年代以来随着计算机技术和VLSL的发展而产生、发展和不断成熟起来的一个新兴技术领域。数字图像处理技术其实就是利用各种数字硬件与计算机,对图像信息通过转换而得到的电信号进行相应的数学运算,例如图像去噪、图像分割、提取特征、图像增强、图像复原等,以便提高图像的实用性。其特点是处理精度比较高,并且能够对处理软件进行改进来优化处理效果,操作比较方便,但是由于数字图像需要处理的数据量一般很大,因此处理速度有待提高。目前,随着计算机技术的不断发展,计算机的运算速度得到了很大程度的提高。在短短的历史中,它

却广泛应用于几乎所有与成像有关的领域,在理论上和实际应用上都取得了巨大的成就。 1、数字图像处理需用到的关键技术 由于数字图像处理的方便性和灵活性,因此数字图像处理技术已经成为了图像处理领域中的主流。数字图像处理技术主要涉及到的关键技术有:图像的采集与数字化、图像的编码、图像的增强、图像恢复、图像分割、图像分析等。 图像的采集与数字化:就是通过量化和取样将一个自然图像转换为计算机能够处理的数字形式。 图像编码:图像编码的目的主要是来压缩图像的信息量,以便能够满足存储和传输的要求。 图像的增强:图像的增强其主要目的是使图像变得清晰或者将其变换为机器能够很容易分析的形式,图像增强方法一般有:直方图处理、灰度等级、伪彩色处理、边缘锐化、干扰抵制。 图像的恢复:图像恢复的目的是减少或除去在获得图像的过程中因为各种原因而产生的退化,可能是由于光学系统的离焦或像差、被摄物与摄像系统两者之间的相对运动、光学或电子系统的噪声与介于被摄像物跟摄像系统之间的大气湍流等等。 图像的分割:图像分割是将图像划分为一些互相不重叠的区域,其中每一个区域都是像素的一个连续集,通常采用区域法或者寻求区域边界的境界法。 图像分析:图像分析是指从图像中抽取某些有用的信息、数据或

图形创意教案54205

《图形创意》教案 第一章导论 图形创意是一门学科基础课程,是艺术设计专业视觉传达方向学生的必修课程。通过本课程的学习和训练使学生掌握创造图形新形式和有效传达信息的视觉语言的基本技能,促进创新思维,培养现代设计的艺术观和审美观。 今天我们看到越来越多的图形作品,它们奇特的形态吸引着我们的目光,意味深长的符号给我们无限遐想。这些睿智的图形不仅让我们赞叹,更让我们产生创作的冲动,图形设计课将使更多人了解如何去欣赏图形、理解图形、创作图形。 图形创意课程的基本内容 图形创意研究的是图形语言,从教学内容来看,主要分为理论知识点和实践方法论两个部分。其中理论知识点包括:图形的概念,图形发展的历程,现代图形的特征和创作原则、创意图形的构成形式等,同时穿插介绍与图形相关的视觉心理 学、符号学、思维模式等方面知识。方法论部分则包括:图形创意的思维方式,现代图形语言的表现形式、创作技巧以及图形的延展运用等。 图形创意课程的目的和意义 开设图形课程的目的是双重的,一是培养学生创作图形想象的能力,包括构思和表现两方面的能力,建立起一种全新的视觉想象与呈现的手段;另一个目的,也是意义更深远的目的,则是训练学生进行创造性的思维,学习如何在面对问题时通过恰当的思维过程多方位地挖掘解决问题的新方法。

图形创意在艺术设计教学过程中处于一种承前起后的过渡位置,它引导学生将前期已经具备的表现能力转向后期的专业设计中,而这个过渡就是通过创意思维来实现的。 图形创意课程与其他课程的关系 由于图形课程在整个教学过程中的特殊位置决定了在修学这门课之前学生应该已具备一定的能力,特别是基本的形态描绘能力,并具备一定的审美能力,才能在图形创意课程中有能力将自己想象的图形生动准确地表现出来。图形课程所表现的元素是具体的事物形态,而以此为研究内容的课程还有一些,它们之间容易产生混淆,因此搞清其中的区别将有利于我们对图形的正确认识。 在视觉传达领域,需要分清图形与图案的关系。应该说图案在创作中有时会用到图形创意的手法,而图形在表现上也会借鉴图案的形式,但并不能将二者混为一谈。 图案强调的是装饰效果,虽然是对具象事物进行抽象概括的表现,但仍是在现实形态的基础上进行夸张、变形,追求的视觉上的审美效果。 图形创作的是以主观需要为出发点的形态,根据一定目的重新构建创造新的形态,这种新形态较之于图案对形态的变化在视觉上更为写实,但在内容上则更为“荒诞”,这是两者的根本区别。 图形与插画 在现代插图中,有许多作品都是以图形创意的语言来表现的,一些插图作品也经常被作为成功案例在图形课上示范给学生看,同时图形作品的表现形式也非常像插图作品,但这并不等于两门课程可以等同视之。 插图课是一门独立的设计专业课,它研究的是插图创作中的各种思路、技巧、风格,图形创意只是其中一种思维方式、表现手段。

相关主题
文本预览
相关文档 最新文档