
1、空心汉字字形如采用AutoCAD R14中的BONUS功能,有一个TXTEXP命令,可将文本炸为线,对做立体字十分有用。
2、AutoCAD R14的Support中ACADdwt为缺省模板,要好好加工它,把常用的层、块、标注类型定义好,再加上标准图框,能省去大量重复工作。
3、dimzin系统变量最好要设定为8,这时尺寸标注中的缺省值不会带几个尾零,用户直接接受缺省值十分方便快捷。
4、trim命令中提示选取要剪切的图形时,不支持常用的window和crossing选取方式。当要剪切多条线段时,要选取多次才能完成。这时能够采用fence选取方式。当trim命令提示选择要剪除的图形时,输入“f”,然后在屏幕上画出一条虚线,回车,这时被该虚线接触到的图形全部被剪切掉。
5、AutoCAD R14中用NOTEPAD、EDIT、DIR、DEL等系统命令,笔者认为其中NOTEPAD对自定义CAD用途较大,但采用起来会发现屏幕一闪(进了DOS),又返回,十分让人不愉快,让我们来编一个小程序,取名为notelsp:
(defun c:notepad()
(startapp "notepad"()
先将ACADpgp中的NOTEPAD命令定义行删除,重入CAD后,再将此程序用命令:(load "note")装入,下一次用NOTEPAD命令会有更好效果,最好将(load "note")加入Support子目录下的ACADR14lsp 中。
6、在CAD中可按规定编定ahp的CAD帮助文件,在R14下用ahp2hlpexe将其转变为hpj的文件和 rtf的文件,再用HelpWorkshop工具(在VC5中有)将其项目打开,编译为hlp文件。
7、在多行文字(mtext)命令中采用Word97编辑文本。 Mtext多行文字编辑器是AutoCAD R14中的新增功能,它提供了Windows文字处理软件所具备的界面和工作方式,它甚至能够利用Word97的强大功能编辑文本,这一功能能够用如下方法实现:
打开“Tools”菜单选“Preferences” 命令,“Preferences”对话框d出后,打开“Files/Text Editor,Dictionary,and Font File Name/Text Editor Application/Internal”,双击“Internal”,出现“Select
a file”对话框,接着找到“Winwordexe”应用程序文件,击“打开”钮,最后单击“OK”返回。完成以上设置后,用户如再采用mtext命令时系统将自动调用我们熟悉的Word97应用程序,为AutoCAD中的文本锦上添花。
8、汉化菜单。将support目录下的acadmnu文件复制为chinesemnu。用写字板打开chinesemnu。仔细观察会发现其中有许多类似“***POP”的条目,每一条目定义了一列下拉菜单。将引号中的英文命令名称改为中文,存盘退出。再在R14中输入“menu”命令,将chinesemnu菜单文件装入,下拉菜单就变成了中文。还能够再装入acadmnu 文件将菜单还原。
9、CMDECHO变量决定了命令行回显是否产生,其在程序执行中应设为0。
10、AutoCAD R14的命令缩写也可用在R13,方法是将AutoCAD R14下Support子目录下的ACADpgp拷贝至AutoCAD R13的Support子目录下。
11、形如f30H11( )的标注如何去标注呢,请在文本内容中输入“%%c30{H11(}{H07x;S+01^-02;})”,能够实现,如嫌太麻烦,就编个程序来简化 *** 作。
12、在AutoCAD中的菜单源文件为mnu文件,将其修改可将自己的命令加入菜单中,再用menu命令装入,可参加AutoCAD帮助了解菜单文件格式。图标工具条中加入自己的命令相对简单,可在工具条上点右键,在toolbar对话中,点new按钮,输入工具条后,一个新工具条产生,再选Customize按钮,选定custom,将空按钮拖入工具条中,再在空按钮上按右键,这样就可定义自己的按钮图标和命令。
13、巧用工具按钮自定义。AutoCAD中有许多lsp文件能为我们提供非常实用的命令,如chtextlsp就是一个很好的文字修改命令,尤其适用于大批文字的修改,但在采用这样的命令之前必须先把lsp文件载入。一般用户能够通过选取“Tools”菜单中“Load Application ”选项,再利用对话框打开AutoCAD R14/Support下的Chtextlsp文件,然后击 “Load”钮,或者也能够直接在命令行中键入“(load “chtext”)” 以达到载入的目的,如此做总有些繁琐。下面我们用自定义工具按钮的方式解决这个问题,右击任意工具钮,d出“Toolbars”对话框,击“Customize”钮,在“Categories:”中选“Custom”项,将出现的空按钮拖到工具条中目标位置,击“Close”钮返回,接着右击空按钮,出现“Button Properties”对话框,在“Name:”栏中为命令钮命名,“Help:”栏中用户可写入或不写入内容,然后在“Macro:”中键入“(load “chtext”)cht”,至于“Button Icon",用户可选系统提供的图标,也能够点“Edit”自行绘制或者直接调用已有的bmp文件,最后点“Apply”钮并依次关闭对话框返回。这样用户自己的工作按钮就做成了。由于在后面增加了“cht”(注意:前面要有空格),所以用户只要按下工具钮便能够直接去选择要编辑的目标文件。
14、单击“Object Propertys”工具条上的“Make objects' layer current”按钮,然后在作图区选择要去的图层上的任一图形,当前层立刻变换到选取的图形所在层。
15、在AutoCAD中有时有交点标记在鼠标点击处产生,用BLIPMODE命令,在提示行下输入OFF可消除它。
16、BREAK命令用来打断实体,用户也能够一点断开实体,用法是在第一点选择后,输入“@”。常用一条线一段为点划线,另一段为实线时。
21.用户自定义的Lisp文件一定要自动装入AutoCAD,这样就需要在acadr14lsp中加入用户Lisp文件的装入语句,acadr14lsp(早期版本为acadlsp),好似DOS的Autoexecbat,一定要好好利用,在其中如定义了名为S::STARTUP()的函数可自动运行它(给CAD加个启用画面如何,可用STARTUP加startapp函数,也可加登录密码)。
22、AutoCAD的状态行也可自定义,用DIESEL语言能够访问它,最简单的方法用modemacro命令,后输入$(getvar,clayer),以后当前层名就显示在状态行上,用户化可谓无孔不入吧!
23、“Stretch”命令也是一个常用命令,但输入命令后,系统总要提示“select object to stretch by crossing_window or crossing_polygon”,要求用户再输入一个“C”后才能用鼠标去选择目标。为了使 *** 作简化,用户只需将系统提供的工具按钮做些小小的修改就行。右击任意工具按钮d出“Toolbars”对话框,再右击“stretch”工具钮d出“Button Proporties”对话框,在“Macro:”框中的“^c^c_stretch”后键入空格和“C”。以后用户再点击处理后的工具钮就能够直接选择目标进行 *** 作。
24、用R14打开R12的文件时,即使正确地选择了汉字字形文件,还是会出现汉字乱码,原因是R14与R12采用的代码页不同。可到AutoDesk公司主页下载代码页转换工具wnewcp。运行wnewcp 后,首先选中“R11/R12”复选框,再单击“Browse”按钮,选择要转换的文件或目录,然后选择新的代码页,ANSI936或GB2312均可,单击“Start Conversion”即开始转换。转换后,在R14中就能正确地显示汉字。
25、DIMSCALE决定了尺寸标注的比例,其值为整数,缺省为1,在图形有了一定比例缩放时应最好将其改为缩放比例。
26、AutoCAD R14中提供了大量的命令缩写,许多R13中无缩写的命令也有了缩写,下面提供了CAD中的单字符缩写:A:ARC, B:Bmake, C:Circle, D:ddim, E:erase,F:fillet,G:group,H:bhatch,I:ddinsert,L:line,M:move,offset,P:pan,R:redraw,S:stretch, T:mtext,U:undo,V:ddview,W:Wblock,X:explode,Z:zoo,可大量采用之,采用后会发现比鼠标点取快(尤其在1s输5个字符的速度下)。AutoCAD R14大量扩充了简化命令,不仅增加了以首字母简化的命令(这里不列出),而且增加了用前两个字母简化的命令,常用的如:array、copy、dist、donut、dtext、filter、mirror、pline、rotate、trim、scale、snap、style、units等,更加提高了用键盘输入命令的速度,对熟悉键盘的朋友来说简直是如虎添翼。
27、AutoCAD二次开发工具很多,Lisp早就有了,R11提供了ADS(Acad Develop system),R12中提供了ADS对实模式下C编译器(如BC,MSC)的支持,R13提供ARX(Acad Runtime eXtend),R14提供了VB Automation,这个Automation使VB编写CAD程序成为可能,渴望CAD编程的人有了一个最好的选择,不必学习ADS、ARX、Object ARX,和AutoLisp,一起加入AutoCAD编程的世界。
28、AutoCAD的图形格式为dwg,也可导出为bmp及wmf或eps、dxf、3ds,假如用render命令可存为pcx、tga、tif格式,AutoCAD还可将文件直接存为这几种格式,要为系统装一个名为“Raster file export”的打印机,用它打印到文件,ACAD2000还可将文件存为JPG格式。
29、R14默认的“命令取消”键是“ESC”键,假如用户已经习惯了R12的“Ctrl+C”怎么办呢?点击菜单Tools preferencescompatibilitypriority for accelerator keysautoCAD classic,然后就能够用“Ctrl+C”取消命令了,同时“ESC”键仍然有效。
30、有的用户采用AutoCAD时会发现命令中的对话框会变成提示行,如打印命令,控制它的是系统变量CMDDIA,关掉它就行了。
31、AutoCAD中有不少外部Lisp命令文件,能够直接观察它们,假如学习开发Lisp应用程序,注意:R14可是最后一版Lisp文件内容公开的AUTOCAD,在CAD2000中Lisp文件内容是加密的。
32、AutoCAD R14用户通常均采用系统给出的缺省格式存盘,这种格式存盘的缺点是文件所占空间大,不能用低版本的应用程序(如:AutoCAD R12、AutoCAD R13)打开,为避免磁盘空间的浪费,用户能够在“Save Drawing As”对话框的“保存类型”中选“AutoCAD R12/LT2 Drawing”格式存盘。例如:同一dwg文件用两种方式存盘,它们的大小分别是87KB、58KB。可见差别还是很可观的。而且后者文件能够在R12、R13版本的应用程序中打开。这种方法对配置较低的用户尤为实用。
33、AutoCAD R14的BONUS中有一个ARCTEXT命令,可实现弧形文本输出,采用方法为先选圆弧,再输入文本内容,按OK。
34、AutoCAD R14中打印线宽可由颜色设定,这样机械制图中的各种线型不同、线宽不同的线条可放入不同的层,在层中定义了线型和颜色,而在打印设置中设定线型与颜色的关系,效果良好。
35、在作完零件图进行组装时,可将零件图块插入后焊开,再用group成组后组装,这时用ddselect命令控制组选取处于何种状态,取消组选取时可将组内成员删除、剪切、修改,要移动零件时再打开组状态。
36、CAD的较高版本中提供了形位公差标注,但圆度及同轴度中的圆不够圆,其实,AutoCAD中常见符号定义都在AutoCAD安装目录下SUPPORT子目录下的gdtshp文件中,其中2号和4号字符定义了圆形的形状,圆的弧度竟为127°,但不太好改正之(如改为90°更不好看)。
37、AutoCAD中ACADpgp文件十分重要,它记录命令缩写内容,用户可自定义它们,格式如下:<命令缩写> 命令名称。也可定义系统命令,AutoCAD R14提供了sh命令,可执行DOS命令,但在Windows下作用不大。
38、在AutoCAD中有一些DOS下的exe文件在R14中仍有用途,用Slidelibexe可将幻灯片作库,mcexe可实现菜单的编译。
39、如遇到快捷键失效,如^o失去作用,变为正交模式切换的情况,请用menu将当前采用菜单的mnu菜单源文件重装一遍就行。
40、BREAK将实体两点截开,在选取第二点时如用“@”来回答,可由第一点将实体分开。
import javaawt;
import javaawtevent;
import javaxswing;
import javatextDateFormat;
import javaxswingevent;
import javaxswingtable;
import javaxswingtree;
import javaxswingfilechooser;
import javaio;
import javautil;
public class WinExplorer extends JFrame implements TreeSelectionListener{
JPanel contentPane=(JPanel)getContentPane();;
JMenuBar menuBar = new JMenuBar();
JMenu menuFile = new JMenu("文件");
JMenuItem menuItemExit = new JMenuItem("退出");
JToolBar toolBar = new JToolBar();
JButton bttUp = new JButton();
Icon iconUp=UIManagergetIcon("FileChooserupFolderIcon");
JLabel statusBar = new JLabel();
DetailTable detailTable = new DetailTable();
JScrollPane sp = new JScrollPane(detailTable);
JSplitPane split = new JSplitPane();
FileSystemView fileSystemView=FileSystemViewgetFileSystemView();
FileNode root=new FileNode(fileSystemViewgetRoots()[0]);
DefaultTreeModel treeModel=new DefaultTreeModel(root);
JTree tree = new JTree(treeModel);
public static void main(String argv[]){
try {
UIManagersetLookAndFeel(UIManagergetSystemLookAndFeelClassName());
Font font=new Font("宋体",FontPLAIN,12);
String names[]={"Label","CheckBox","PopupMenu","TextPane",
"MenuItem","CheckBoxMenuItem","JRadioButtonMenuItem",
"ComboBox","Button","Tree","ScrollPane","TabbedPane",
"EditorPane","TitledBorder","Menu","TextArea","OptionPane",
"MenuBar","ToolBar","ToggleButton","ToolTip","ProgressBar",
"TableHeader","Panel","List","ColorChooser","PasswordField",
"TextField","Table","Label","Viewport","RadioButtonMenuItem",
"RadioButton"};
for(int i=0;i<nameslength;i++)UIManagerput(names[i]+"font",font);
UIManagerput("Labelforeground",Colorblack);
UIManagerput("Borderforeground",Colorblack);
UIManagerput("TitledBordertitleColor",Colorblack);
new WinExplorer()show();
}catch(Exception e){
eprintStackTrace();
}
}
public WinExplorer() {
contentPanesetLayout(new BorderLayout());
Dimension dimension = getToolkit()getScreenSize();
int i = (dimensionwidth - 640) / 2;
int j = (dimensionheight - 480) / 2;
setBounds(i,j,640,480);
setTitle("资源管理器");
setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
setJMenuBar(menuBar);
statusBarsetText(" ");
menuItemExitaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {Systemexit(0);}
});
bttUpsetIcon(iconUp);
bttUpaddActionListener(new javaawteventActionListener() {
public void actionPerformed(ActionEvent e) {
try{
TreePath upPath=treegetSelectionPath()getParentPath();
if(upPath!=null){
treesetSelectionPath(upPath);
treescrollPathToVisible(upPath);
}
}catch(Exception ex){}
}
});
splitsetDividerSize(6);
splitsetLeftComponent(new JScrollPane(tree));
splitsetRightComponent(sp);
splitsetDividerLocation(180);
spgetViewport()setBackground(Colorwhite);
menuFileadd(menuItemExit);
menuBaradd(menuFile);
contentPaneadd(toolBar, BorderLayoutNORTH);
toolBaradd(bttUp, null);
contentPaneadd(statusBar, BorderLayoutSOUTH);
contentPaneadd(split, BorderLayoutCENTER);
treeaddTreeExpansionListener(new MyExpandsionListener());
treesetCellRenderer(new MyTreeCellRenderer());
treeaddTreeSelectionListener(this);
treesetSelectionRow(0);
treesetComponentOrientation(ComponentOrientationUNKNOWN);
}
public void valueChanged(TreeSelectionEvent e){
Object obj=treegetLastSelectedPathComponent();
if(obj==null)return;
else detailTablesetParent(((FileNode)obj)getFile());
}
class MyTreeCellRenderer extends DefaultTreeCellRenderer {
public MyTreeCellRenderer() {}
public Component getTreeCellRendererComponent(JTree tree,Object value,
boolean sel,boolean expanded,boolean leaf,int row,boolean hasFocus) {
supergetTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
setIcon(fileSystemViewgetSystemIcon(((FileNode)value)getFile()));
return this;
}
}
class MyExpandsionListener implements TreeExpansionListener {
public MyExpandsionListener() {}
public void treeExpanded(TreeExpansionEvent event) {
if(eventgetPath() == null){
return;
}
treesetCursor(new Cursor(CursorWAIT_CURSOR));
TreePath path = eventgetPath();
FileNode node = (FileNode)pathgetLastPathComponent();
nodeexplore();
treeModelnodeStructureChanged(node);
treesetCursor(new Cursor(CursorDEFAULT_CURSOR));
}
public void treeCollapsed(TreeExpansionEvent event) {}
}
class FileNode extends DefaultMutableTreeNode {
private boolean explored = false;
public FileNode(File file) { setUserObject(file); }
public boolean getAllowsChildren() { return isDirectory(); }
public boolean isLeaf() { return !isDirectory();}
public File getFile() { return (File)getUserObject(); }
public boolean isExplored() { return explored; }
public void setExplored(boolean b){ explored=b;}
public boolean isDirectory() { return getFile()isDirectory();}
public String toString() {
File file = (File)getUserObject();
String filename = filetoString();
int index = filenamelastIndexOf(Fileseparator);
return (index != -1 && index != filenamelength()-1)
filenamesubstring(index+1) : filename;
}
public void explore() {
if(!isExplored()) {
File file = getFile();
File[] children = filelistFiles();
if(children==null||childrenlength==0)return;
for(int i=0; i < childrenlength; ++i)
{
File f=children[i];
if(fisDirectory())add(new FileNode(children[i]));
}
explored = true;
}
}
}
class DetailTable extends JTable{
DetailTableModel model=new DetailTableModel();
public DetailTable(){
setModel(model);
setShowGrid(false);
TableColumnModel colModel = getColumnModel();
for (int i=0;i<3;i++)
colModelgetColumn(i)setCellRenderer(new DetailsTableCellRenderer());
setRowHeight(18);
thisaddMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
if(egetClickCount()==2){
for (int i = 0; i <getRowCount(); i++) {
if(getCellRect(i,0,true)contains(egetPoint())){
openSelect();
break;
}
}
}
}
});
}
public void openSelect(){
Object obj=modelgetValueAt(getSelectedRow(),0);
if(obj==null)return;
File f=(File)obj;
if(fisDirectory()){
//expand tree
}else{
//open select file
}
}
public void setParent(File parent){
modelremoveAllRows();
File list[]=parentlistFiles();
if(list==null)return;
Vector vDir=new Vector(),vFile=new Vector();
for (int i = 0; i < listlength; i++) {
if(list[i]isDirectory())vDiradd(list[i]);
else vFileadd(list[i]);
}
sortElements(vFile);
sortElements(vDir);
for (int i = 0; i < vDirsize(); i++)modeladdFile((File)vDirelementAt(i));
for (int i = 0; i < vFilesize(); i++)modeladdFile((File)vFileelementAt(i));
}
public void sortElements(Vector v)
{
for(int i=0;i<vsize();i++)
{
int k=i;
for(int j=i+1;j<vsize();j++){
File fa=(File)velementAt(j);
File fb=(File)velementAt(k);
if(fileSystemViewgetSystemDisplayName(fa)toLowerCase()compareTo(
fileSystemViewgetSystemDisplayName(fb)toLowerCase())<0)k=j;
}
if(k!=i)swap(k,i,v);
}
}
private void swap(int loc1,int loc2,Vector v){
Object tmp=velementAt(loc1);
vsetElementAt(velementAt(loc2),loc1);
vsetElementAt(tmp,loc2);
}
class DetailTableModel extends DefaultTableModel {
public DetailTableModel() {
addColumn("名称");
addColumn("大小");
addColumn("修改时间");
}
public void addFile(File f){
addRow(new Object[]{f,new Double(flength()/1024),
new javasqlDate(flastModified())});
}
public void removeAllRows(){
while(getRowCount()!=0) removeRow(0);
}
public boolean isCellEditable(int row, int column) {return false;}
}
class DetailsTableCellRenderer extends DefaultTableCellRenderer {
DetailsTableCellRenderer() {}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (column == 1){
setHorizontalAlignment(SwingConstantsTRAILING);
isSelected=hasFocus=false;
}else if(column==2){
setHorizontalAlignment(SwingConstantsCENTER);
isSelected=hasFocus=false;
}else setHorizontalAlignment(SwingConstantsLEADING);
return supergetTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
}
public void setValue(Object value) {
setIcon(null);
if (value instanceof File) {
File file = (File)value;
setText(fileSystemViewgetSystemDisplayName(file));
setIcon(fileSystemViewgetSystemIcon(file));
}else{
supersetValue(value);
}
}
}
}
}
你双击左面的桌面图标就可以浏览了,别双击字。
在MATLAB的命令窗口(Command Window)中运行guide命令,来打开GUIDE界面,如下:
然后,选择空模板(Blang
GUI),点击OK,即可打开GUIDE的设计界面,如下:
点击工具栏上的菜单编辑器(Menu
Editor),打开菜单编辑器,如下:
在Menu
Bar中新建一个菜单项,名字为“文件”,其他设置请看下图:
在“文件”菜单下添加菜单项:“打开”,“保存”,“退出”。见下图:
如果需要在菜单项“退出”上面添加一个分割线的话,选中“Separator
above this item”就行了。
保存我的界面为pjimagefig
保存完毕之后,会自动打开pjimagem文件,而我们所有的程序都是要写在这个M文件里面的。在编程中,我们的每一个鼠标动作都对应一个Callback函数。那么我们的菜单项也是如此的。
在界面上,单击鼠标右键选择“Property
Inspector”,即可打开属性窗口。当我们点击不同的控件时,其对应的属性都会在这里显示,我们可以进行修改。最主要的属性莫过于Tag属性和String属性。
设置当前Figure窗口的Tag属性为:figure_pjimage,窗口的标题(Name属性)为:图像处理实例。如下:
然后,点击工具栏的保存按钮。之后,点击工具栏的运行按钮(Run
Figure)。注意,工具栏的图标都会有提示的,像运行按钮的提示就是Run Figure
我们会看到如下的界面:
那说明,我们保存的fig文件的目录不是当前目录,但是没关系啊,我们只要点击“Change
Directory”来改变当前目录。当然,如果你想把当前目录添加到MATLAB路径也可以,那就点击“Add to
Path”就OK了。我在这里推荐点击“Change
Directory”,因为没有什么太大必要把其添加到MATLAB路径中,一般是工具箱需要添加或者我们的函数或程序写完了,而在MATLAB的命令窗口找不到我们的函数的时候,我们可以将函数或程序所在的目录添加到MATLAB路径。
总之吧,点那个按钮,要看个人的爱好了。不管点击两个按钮的那一个按钮,都会正确的运行程序的。
我们的程序运行时的样子,是这样的:
文件下面的菜单项和快捷键我们都能看到,但是我们没有写程序,所以就算点也没有什么响应。还有如果不想设置快捷键,可以在Menu
Editor中设置,只要把其选择为Ctrl+none就行了,如下:
这样的话,保存项就没有了快捷键了。我们可以通过上面的按钮“View”来查看该菜单项的响应函数,也就是Callback函数。也可以在pjimagem中看,比如保存的Tag属性是m_file_save,那么它对应的Callback函数的名字就是m_file_save_Callback。依次类推了。
下面我们来写打开菜单项的函数,要打开一个,当然要用打开对话框了。在界面编程中,打开对话框的函数是uigetfile
关于它的详细的说明用help uigetfile命令查看。下面是打开菜单的响应函数:
function
m_file_open_Callback(hObject, eventdata, handles)
[filename, pathname] =
uigetfile(
{'bmp;jpg;png;jpeg', 'Image Files (bmp,
jpg, png, jpeg)';
'', 'All Files
()'},
'Pick an
image');
保存m文件,并运行程序。点击“文件”下的“打开”,会打开如下的打开对话框:
选择一个文件之后,程序中的filename就是你选择的文件的文件名,pathname就是该文件所在的目录的路径。比如:filename
=5jpg,pathname =C:\Documents and Settings\Administrator\My
Documents\。
那么获得路径之后,我们要怎么样才能读入和显示一个呢?读入可以用imread函数,而显示可以在一个坐标轴上。那么我们需要在界面上画上一个坐标轴,为了对比,我们画两个坐标轴,一个显示处理前,一个显示处理后的。并且将处理前的坐标轴的Tag属性改为axes_src,处理后的坐标轴的Tag属性为axes_dst。更改之后,保存。如下:
然后在m_file_open_Callback程序原来的基础上,再添加如下的程序:
axes(handlesaxes_src);%用axes命令设定当前 *** 作的坐标轴是axes_src
fpath=[pathname
filename];%将文件名和目录名组合成一个完整的路径
imshow(imread(fpath));%用imread读入,并用imshow在axes_src上显示
运行程序,通过“打开”菜单项,打开一个。效果如下:
那么如何来保存一副?用imwrite命令。但imwrite命令的第一个参数就是你读入的数据,也就是imread的返回值。这样的话,我们就要将m_file_open_Callback中的程序做一点小小的改动。将最后一句(imshow(imread(fpath))),更改为两句,如下:img_src=imread(fpath);imshow(img_src);
不仅如此,我们的保存菜单的Callback函数,如何去获得打开菜单的Callback函数下的img_src变量呢?这里就要将img_src来作为一个共享的数据。许多界面编程的朋友,喜欢用global声明。我个人不喜欢这样用,因为有更好的方法。那就是用setappdata和getappdata两个函数。我们可以为界面上面的任何一个具有Tag属性的空间添加应用程序数据。当然我比较喜欢将这些共享的应用程序数据统一添加到Figure窗口上,因为这样容易记,如果一个控件一个,感觉不容易记。
你在m文件中会发现除了各个菜单项的Callback函数以外,还有两个函数:pjimage_OpeningFcn和pjimage_OutputFcn而pjimage_OpeningFcn就相当于界面的初始化函数,而pjimage_OutputFcn则是界面的输出函数,也就是当你不运行fig,而调用m文件时的返回值。
所以,我们要在pjimage_OpeningFcn中添加如下的程序,来共享这个img_src矩阵。代码如下:
setappdata(handlesfigure_pjimage,’img_src’,0);
然后,在m_file_open_Callback函数的最后写上如下程序:
setappdata(handlesfigure_pjimage,’img_src’,img_src);
那么,我们在m_file_save_Callback函数中就可以像这样的来提取img_src,如下:
img_src=getappdata(handlesfigure_pjimage,’img_src’);
那么保存的时候,自然会用到保存对话框了。要用保存对话框,就要用到uiputfile函数了,具体的请用help
uiputfile查看。
那么,保存菜单项下的程序(m_file_save_Callback),可以这样写:
[filename,
pathname] = uiputfile({'bmp','BMP files';'jpg;','JPG files'}, 'Pick an
Image');
if isequal(filename,0) || isequal(pathname,0)
return;%如果点了“取消”
else
fpath=fullfile(pathname,
filename);%获得全路径的另一种方法
end
img_src=getappdata(handlesfigure_pjimage,'img_src');%取得打开的数据
imwrite(img_src,fpath);%保存
下面是退出菜单项的程序的。要退出界面,只要用close函数就行了,但是通常都会有提示的。比如你如果进行了处理,而又没有保存处理后的,那么在关闭的时候就应该给出提示,询问是否进行保存。不过,在这里,我们先不做这个工作,等后面有需要的时候再写吧。因此,这里的退出菜单项的程序就是一句,如下:
close(handlesfigure_pjimage);
其实,用delete函数也是可以的,就是:delete(handlesfigure_pjimage);看你的心情了。
但是运行程序的时候,你会发现,当你打开的时候,如果点“取消”按钮,那么在MATLAB的命令窗口会d出错误,那是因为我们没有处理取消的情况。下面我们来处理下这个问题,只要把m_file_open_Callback下面的程序更改为如下程序即可:
[filename,
pathname] = uigetfile(
{'bmp;jpg;png;jpeg', 'Image Files
(bmp, jpg, png, jpeg)';
'', 'All Files
()'},
'Pick an image');
if isequal(filename,0) ||
isequal(pathname,0),
return;
end
axes(handlesaxes_src);
fpath=[pathname
filename];
img_src=imread(fpath);
imshow(img_src);
setappdata(handlesfigure_pjimage,'img_src',img_src);
下面我们来做一个图像二值化的一个图像处理。用上面的方法添加一个“图像处理”菜单,如下:
在其下面添加一个“图像二值化”的菜单项,如下:
然后,点击“OK”关闭菜单编辑器,并保存整个界面。如果我们的m文件中没有对应的Callback时,我们可以点击上图中的“View”按钮来生成一个Callback函数。图像二值化,有一个阈值的设置,那么我们可以新建一个界面,在这个界面上放一个滑动条来设置图像二值化的阈值。同时,有一个文本,显示当前滑动条的值。那么我们新建一个空白界面,在它上面画一个Static
Text和Slider控件,然后用工具栏的对齐工具(Align
Objects),来对其这两个空间。如下:
然后,将这个界面保存为im2bw_argsfig。整个设计如下:
你可以设置Static
Text的FontSize属性为10,这样字体会更大一点。设置Static
Text的Tag属性为txt_display,设置滚动条的Tag属性为slider_val。为了能够在滚动条滚动时,Static
Text显示滚动条的值,需要在滚动条的Callback中写下如下程序,你可以在滚动条上点击右键,选择“View
Callbacks”下的“Callback”直接进入滚动条的Callback函数(slider_val_Callback)。
val=get(hObject,'Value');
set(handlestxt_display,'String',num2str(val));
保存,运行程序,就可以滑动滚动条,而Static
Text就会显示相应的值。在figure上双击打开figure(有方块的底层窗口)的属性窗口,将其Tag属性设置为“figure_im2bw”,将其Name属性设置为“设置图像二值化阈值”。然后,保存界面。运行时,如下:
那么,我们想的是,当滑动条滑动时,将二值化的图像显示在pjimagefig中的axes_dst坐标轴上的。那么怎么办呢?首先,要做的是,当点击pjimagefig菜单“图像处理”下的“图像二值化”的时候,会打开im2bw_argsfig。这个时候就是我们要调用im2bw_argsm的时候了。当我们调用它的时候,会返回一个句柄,而这个句柄就是指向打开的im2bw_argsfig的。关于更详细的,你可以参看im2bw_argsm文件的最前面的注释,其中有这样写:
%
H = IM2BW_ARGS returns the handle to a new IM2BW_ARGS or the handle to
% the
existing
singleton
那就说明,我们可以如上的方式打开im2bw_argsfig。所以在“图像二值化”的Callback函数(m_image_2bw_Callback)下,写上如下的程序:
h=im2bw_args;
然后,保存pjimagefig还有就是,最好将im2bw_argsfig和pjimagefig保存在一个目录下面。然后,运行pjimagefig,可以看到,当点击“图像二值化”的时候会打开im2bw_argsfig,同时滑动条滑动时也会显示响应的值。
下面来说说如何在滑动条滑动时,将滑动后的二值化图像显示到pjimage的axes_dst坐标轴中。
首先,我们要获得pjimage的figure的句柄,这个可以通过findobj函数来完成,之后将返回值用guihandles来转换成一个句柄。之后,就可以用这个转化后的句柄来引用pjimagefig中的任何一个控件了。所以,我们在im2bw_argsfig下的滑动条的Callback函数中添加如下函数:
h_pjimage=getappdata(handlesfigure_im2bw,'h_pjimage');
axes(h_pjimageaxes_dst);
img_src=getappdata(h_pjimagefigure_pjimage,'img_src');
bw=im2bw(img_src,val);
imshow(bw);
然后,在im2bw_args_OpeningFcn中添加:
h_pjimage=findobj('Tag','figure_pjimage');
h_pjimage=guihandles(h_pjimage);
setappdata(handlesfigure_im2bw,'h_pjimage',h_pjimage);
然后,保存,运行。效果如下:
但是,如果在我们没有打开的情况下,要是点击了“图像二值化”会出现什么问题呢?可以看到显示的图像是全黑的,完全没有意义。所以,我们可以在没有点击“打开”菜单项的时候,使“图像处理”菜单不可用。
那么在pjimagem的OpeningFcn中,添加如下程序:
set(handlesm_image,'Enable','off');
在“打开”菜单项的Callback函数的最后,添加如下程序:
set(handlesm_image,'Enable','on');
这样的话,只要你不点“打开”,就不能用“图像处理”菜单中的命令,效果如下:
点击“打开”之后,就能使用了。
下面,我们来说说前面的问题,就是询问是否保存的问题。首先,我们要设置两个标志:一个是是否被处理过了,二是是否被保存了。那么我们在pjimage_OpeningFcn中,添加如下的两个应用程序数据。
setappdata(handlesfigure_pjimage,'bSave',false);
setappdata(handlesfigure_pjimage,'bChanged',false);
然后在“图像二值化”菜单项的Callback函数中,改变bChanged的值为true,即添加如下程序:
setappdata(handlesfigure_pjimage,'bChanged',true);
由于我们要保存的是坐标轴axes_dst中的图像,而我们“文件”下的“保存”,实质上保存的是坐标轴axes_src中的图像,那怎么办呢?只好再添加一个“保存”菜单项了。这次,我们在坐标轴axes_dst中添加右键菜单。
打开工具栏的菜单编辑器,选择Context
Menu(上下文菜单),如下:
然后,新建一个Context
Menu,其Tag属性为:axes_dst_menu,如下:
然后为其添加菜单项:“保存”,其Tag属性为axes_dst_menu_save如上图。然后,在坐标轴axes_dst上右键,选择“Property
Inspector”。将该坐标轴的UIContextMenu属性更改为axes_dst_menu
如下图:
然后,保存,运行。在axes_dst上点右键就能看到“保存”菜单了。下面来写其函数。
[filename, pathname] =
uiputfile({'bmp','BMP files';'jpg;','JPG files'}, 'Pick an Image');
if
isequal(filename,0) || isequal(pathname,0)
return;
else
fpath=fullfile(pathname,
filename);
end
img_dst=getimage(handlesaxes_dst);
imwrite(img_dst,fpath);
setappdata(handlesfigure_pjimage,’bSave’,true);
但是你会发现,没有读入之前,在axes_dst点右键是有菜单的,一旦二值化之后,再次点右键就没有菜单了。
但是,当我们把右键菜单axes_dst_menu,添加到figure窗口(在没有控件的地方,双击,即可打开figure的属性窗口)的UIContextMenu的时候,就不会出现上面的问题,而且一切运行正常。因为,当你添加到axes_dst之后,一旦坐标轴的内容改变,就会将右键菜单附加到父对象上。因此,如果一定需要在坐标轴上显示右键菜单,就要通过程序创建了。如何创建,咱们先不说,先说说把坐标轴axes_dst保存完毕,退出程序的时候的处理。
将原来的m_file_exit_Callback更改为如下程序:
bChanged=getappdata(handlesfigure_pjimage,'bChanged');%获得是否更改
bSave=getappdata(handlesfigure_pjimage,'bSave');%获得是否保存
if
bChanged==true && bSave==false,%更改了,而没保存时
btnName=questdlg('您已经更改了,但没有保存。要保存吗','提示','保存','不保存','保存');%用提问对话框
switch btnName,
case '保存', %执行axes_dst_menu_save_Callback的功能
feval(@axes_dst_menu_save_Callback,handlesaxes_dst_menu_save,eventdata,handles);
case '不保存',%什么也不做
end
end
h=findobj('Tag','figure_im2bw');%查找是否打开设置图像二值化参数窗口
if
~isempty(h),%找到的话,则关闭
close(h);
end
close(findobj('Tag','figure_pjimage'));%关闭主窗口
下面来为程序添加一个工具栏,单击工具栏上那个的Toolbar
Editor,打开如下:
选择“Predefined
Tools”下的Open,点击“Add”。再次选择“Save”,点击“Add”。并将Open按钮的Tag属性更改为tbl_open,Save按钮的Tag属性更改为tbl_save,如下:
点“View”,来找到Open按钮的Callback,在它的下面来调用菜单中的打开菜单项的Callback,需要在Open按钮的Callback下写下如下程序:
feval(@m_file_open_Callback,handlesm_file_open,eventdata,handles);
用同样的方法,找到Save按钮的Callback,并在它的下面写上保存程序,但是,我们要判断一下是不是第一次保存,如果是,则用保存对话框;如果不是,我们直接保存在第一次保存的路径中就可以了。那么,我们还是需要设置几个应用程序数据的,第一个就是记录是否是第一次保存,第二个是记录第一次保存的路径。这样的话,我们在pjimage_OpeningFcn中添加如下的代码:
setappdata(handlesfigure_pjimage,'fstSave',true);
setappdata(handlesfigure_pjimage,'fstPath',0);
然后,在Save按钮的Callback下,写下如下的程序:
fstSave=getappdata(handlesfigure_pjimage,'fstSave');
if(fstSave==true)
[filename, pathname] = uiputfile({'bmp','BMP files';'jpg;','JPG files'},
'Pick an Image');
if isequal(filename,0) ||
isequal(pathname,0)
return;
else
fpath=fullfile(pathname, filename);
end
img_dst=getimage(handlesaxes_dst);
imwrite(img_dst,fpath);
setappdata(handlesfigure_pjimage,'fstPath',fpath);
setappdata(handlesfigure_pjimage,'bSave',true);
setappdata(handlesfigure_pjimage,'fstSave',false);
else
img_dst=getimage(handlesaxes_dst);
fpath=getappdata(handlesfigure_pjimage,'fstPath');
imwrite(img_dst,fpath);
end
并且,我们还需要在没有打开之前的“文件”下的“保存”和工具栏的“Save”按钮都不可用,只有点击“文件”下的“打开”或工具栏下的“打开”的时候,它们才可用。那么需要在pjimage_OpeningFcn中添加如下代码:
set(handlestbl_save,'Enable','off');
set(handlesm_file_save,'Enable','off');
并且在m_file_open_Callback下,添加如下代码:
set(handlestbl_save,'Enable','on');
set(handlesm_file_save,'Enable','on');
这样一个小程序,算是完成了。
如果您能按照上面的步骤做完这个小小的程序的话,那么界面编程中的问题你已经掌握的差不多了。
1,建一个专用目录,如D:\UG2,将你做的GRIP文件grx和一bmp,拷贝到该目录下 3,在D:\UG\目录下用记事本建一新文件tbr 4,修改安装目录下UGII\MENUS\下的CUSTOM_DIRSDAT,在文件最后加D:\UG5,点TOOLS——CUSTOMIZE,点LOAD,选你新建的文件tbr,OK,在TOOLBARS下最后一行就能看到新建的工具条,勾选它就可以看到了。
那你要在控件所在的面板中插入这张当背景:
public void paint(Graphics g) {
gdrawImage(IMAGE_BG, 0, 0, this);
superpaint(g);
}
1Vegas Video 40
Vegas40是PC平台上用于视频编辑、音频制作、合成、字幕和编码的专业产品。它具有漂亮直观的界面和功能强大的音视频制作工具,为DV视频、音频录制、编辑和混合、流媒体内容作品和环绕声制作提供完整的集成的解决方法。
Vegas40为专业的多媒体制作树立一个新的标准,应用高质量切换、过滤器、片头字幕滚动和文本动画;创建复杂的合成,关键帧轨迹运动和动态全景/局部裁剪,具有不受限制的音轨和非常卓越的灵活性。利用高效计算机和大的内存,Vegas40从时间线提供特技和切换的实时预览,而不必渲染。使用3轮原色和合成色校正滤波器完成先进的颜色校正和场景匹配。使用新的视频示波器精确观看图像信号电平,包括波形、矢量显示、视频RGB值(RGB Parade)和频率曲线监视器。
Vegas40也在音频灵活性中提供终极的功能,包括不受限制的轨迹、对24 bit/96 kHz声音支持、记录输入信号监视、特技自动控制、时间压缩/扩展等等。Vegas40具有超过30个摄影室品质的实时DirectX特技,包括EQ、混响、噪声门限、时间压缩/扩展和延迟。Vegas40充分结合特效、合成、滤波器、剪裁和动态控制等多项工具,提供数字视频流媒体,成为DV视频编辑、多媒体制作和广播等较好的解决方案。
Final Cut Pro 4
这个视频剪辑软件由Premiere创始人Randy Ubillos设计,充分利用了 PowerPC G4 处理器中的“极速引擎”(Velocity Engine)处理核心,提供全新功能,例如不需要加装 PCI卡,就可以实时预览过渡与视频特技编辑、合成和特技,Matrox最近宣布将给Final Cut Pro增加实时特性的硬件加速。该软件的界面设计相当友好,按钮位置得当,具有漂亮的3D感觉,拥有标准的项目窗口及大小可变的双监视器窗口,它运用Avid系统中含有的三点编辑功能,在preferences菜单中进行所有的DV预置之后,采集视频相当爽,用软件控制摄像机,可批量采集。时间线简洁容易浏览,程序的设计者选择邻接的编辑方式,剪辑是首尾相连放置的,切换(例如淡入淡出或划变)是通过在编辑点上双击指定的,并使用控制句柄来控制效果的长度以及入和出。特技调色板具有很多切换,虽然大部分是时髦的飞行运动、卷页模式,然而,这些切换是可自定义的,它使Final Cut Pro优于只有提供少许平凡运行特技的其他的套装软件。
在Final Cut Pro中有许多项目都可以通过具体的参数来设定,这样就可以达到非常精细的调整。Final Cut Pro支持DV标准和所有的QuickTime格式,凡是QuickTime支持的媒体格式在Final Cut Pro都可以使用,这样就可以充分利用以前制作的各种格式的视频文件,还包括数不胜数的Flash动画文件。
总之,这是一个非常好的软件包,它提供较佳的编辑功能,具有像Adobe After Effects高端合成程序包中的合成特性。
Adobe Premiere 65
Adobe Premiere 65软件用于Mac和PC平台,通过对数字视频编辑处理的改进(从采集视频到编辑,直到最终的项目输出),已经设计成专业人员使用的产品。它提供内置的跨平台支持以利于DV设备的大范围的选择,增强的用户界面,新的专业编辑工具和与其他的Adobe应用软件(包括After Effects,Photoshop和GoLive)无缝的结合。目前,Premiere已经成为桌面制作人员的数字非线性编辑软件中的标准。Adobe一直保证Premiere将与变革技术的要求同步发展,随着Premiere 65的开发使用,Adobe已经达到这些要求,虽然大部分界面仍然原封不动,但是拥有一些可喜的变化,当打开程序时,要求用户在A/B风格编辑时间线之间选择,或选择单声道界面以利于使用。时间线的左下角也包含快速访问新的、频繁使用时间线特性的按钮,例如Track Options对话框,Toggle Snap to Edges,Toggle Edge Viewing,Toggle Shift Tracks选项和Toggle Sync模式,还可以使用窗口底部的Track Options对话框按钮打开Track Options对话框,快速添加一个或多个视频或音频轨迹。Adobe Premiere 65中新的工具包括专业级的音频混合器和Automate to Timeline,它们可同时从故事板或项目窗口传送剪辑序列到时间线。Adobe Premiere 65也具有数目众多的界面优化和自定义特性,在整个制作阶段,很容易使用Adobe Premiere的功能强大的编辑工具。
Premiere 65中最大的变化就是对实时软件效果的支持。现在,在Premiere中所做的一切都可以实时预览,包括字幕、色调甚至第三方效果。
Adobe意识到与苹果的数字视频功能集成是Premiere成功的关键,所以Premiere 65既集成iDVD,又集成DVD Studio Pro,前者是苹果的消费级DVD创作软件,后者是苹果的专业级DVD主打解决方案,可以把内容存成DV(数字视频)格式,以便在iDVD中使用,而装了DVD Studio Pro,就可以直接从Premiere的时间线以MPEG-2格式创建DVD了。时间线标记数据是可以导出的,因此也可以在DVD Studio Pro中使用章节点和单帧数据。
in:sync Speed Razor 2000
Speed Razor是Windows完全多线程非线性视频编辑和合成软件,提供全屏幕D1未压缩的品质视频、完全场渲染的NTSC或PAL。它具有不受限制的音视频层,以及DAT品质输出的高达20音频层的实时声音混合。它同差不多所有的编辑硬件一道工作,提供实时双流媒体或单流媒体配置。现在,Speed Razor有两个新的版本:Speed Razor 2000和Speed Razor 2000 X。这两个版本都增加了新的特性,例如可预设快捷键、多重二进制和导出QuickTime格式文件的功能。Speed Razor具有专业的实时视频编辑、实时音频混合和实时视频特技合成的能力。Speed Razor的主要特性包括:精确到帧的批量采集和打印到磁带、大量的快捷键、单步调整方法、不受层限制的合成、高达20个音轨的实时多通道音频混合、CD或DAT品质立体声输出和使作品发送到网站上。Speed Razor使用众多的视频采集硬件,包括Pinnacle系统Targa和DC30系列,Matrox DigiSuite,DigiSuite LE和DTV,FAST DV Master Pro,DPS Perception和Newtek Video Toaster。
除了DigiSuite先进的实时功能外,它多样的切换矩阵和灵活的过渡特技发生器都令它成为 Speed Razor 自由形式分层编辑和合成的理想的硬件平台。超高速多层合成,加上复杂的特技及移动遮挡和加速的图形转换,使其效率更高。
Ulead Media Studio Pro 65
它包括一个编辑程序包,它的文本和视频着色功能方面具有特别的处理强度。Media Studio Pro提供基于PC的纯MPEG-2和DV支持,它允许从录像机、电视、光盘或摄录一体机采集以及观看原始视频。使用Ligos公司的GoMotion技术,支持IEEE 1394和MPEG- 2的DV,确保高品质视频,并大大提高了生产效率。MSP的视频编辑器集合了所有的视频成分——视频、声音、动画和字幕,并改进了这些成分,增加了特技和切换,可以将视频保存为一个文件,把放它在因特网、CD-ROM或录制到录像磁带上。另一个包括MSP的最佳的小程序是视频着色,这一可动画的视频着色程序允许直接在视频序列中的任何帧上着色。对MSP的文本部分特别注意,名为CG Infinity,这个十分完整的基于矢量的图形制作程序生成令人佩服的动画字幕和活动图像。
Media Studio Pro 65增加了一些高级功能,包括DV场景检测、MPEG-2编辑甚至还有DVD光盘制作(这些功能大多都是Ulead的消费类产品中首先推出的),它还提供了直接捕捉MPEG-1和MPEG-2的功能,以及Vectorscope和Waveform监视器以校正色彩。
United Media On-line Express
On-Line Express 专为DigiSuite 平台设计的。On-Line Express 支持所有 DigiSuite 实时功能,包括可调关键帧的慢动作控制、复杂的背景制作、四声道输入和输出、多层合成和加速输出到磁带。On-Line Express 用户还可使用遥控搜索钮Discreet Edit�
拥有非线性编辑系统需要的全部编辑能力:快速剪接、滑动、拖动、替换、插入和覆盖,同时为长短不同的项目提供极好的媒体处理能力。在多处理、Windows 2000多线程环境中,使用Edit非线性编辑系统,将拥有从第一次剪接到在线全过程所需要的速度。Edit桌面系统提供实时关键帧动画的全部图形和特效能力,实时访问Combustion,它是著名的跟踪、图像稳定、绘画和颜色调整工具软件。这个Windows软件程序包根据使用的硬件不同有5个不同的特色,最好是使用Matrox DigiSuite LE和Matrox DigiSuite采集卡的选项1和选项2。现在的版本65增加了更多的合成特性,与DV兼容,可与Discreet公司的其他产品更好地配合使用。它是编辑未压缩的视频的最佳解决方案,编辑是实时的,非线性编辑解决方案在该桌面上完成合成、抠像和直观的特技。Edit完善的多层时间轴的垂直编辑完全使用Alpha通道,编辑复杂的关键帧,48条实时音轨混编使Edit成为广播电视、多媒体项目完美的非线性应用系统。快速时间轴编辑,先进的特效和音频;与Combustion结合, 全部这些都支持广播质量的非压缩图像。Jobnet,一个功能强大的对编辑功能的扩展,在Edit工作站之间共享项目、工作组、时间线、媒介、图形以及独立的片段数据。
AIST MoviePack
MoviePack是一个用于PC的全功能的视频编辑、合成和图像动画软件工具,具有3D特技和超速渲染的先进的核心技术。核心技术QPM和AMT形成AIST的“直接实时预览”或LPR的基础,它不落后于用户的动作,并显示所有的变化,包括切换、特技、变形、颜色校正和字幕。这个软件包是围绕开放式体系结构构建的,它允许用户扩展它,这意味着当要求改变时不必去寻找另外的新程序。作为一个开放的插件主体,MoviePack也给予自定义访问第三方厂家的插件。MoviePack大的改革是AIST称为Intelli渲染的内容,使渲染的视频和剪辑能够从时间线直接播放,只有被修改的帧被重新渲染,不再需要重新渲染整个剪辑。
Incite Studio 26
它是一个Windows软件包,设计在Matrox DigiSuite,DigiSuite LE和DigiSuite DTV硬件上运行。Incite提供一个易用编辑界面、多层的编辑方式,包含许多实用程序以及许多具有无限关键帧的实时特技。它是使用模拟磁带机器的最佳的系统,使用这些机器在同样的时间线上处理基于硬盘的所有剪辑。Incite 是第一款具有“混合”(将基于磁盘、磁带和现场的信号混合)编辑功能的基于 DigiSuite 的软件,还有配音录音和同时视频播放和录制。它充分利用 DigiSuite 平台的实时性能,复杂的合成可使用多层合成引擎完成,Incite 用户还可使用遥控搜索钮疡市场上最好的混合数字视频编辑器的荣誉。
Avid Xpress 4
该软件拥有编辑层的独特的方法,视频是无损的。它是可以在桌面工作站或笔记本上使用的唯一的一个软件产品,用户界面非常像Avid Media Composer。新的版本Xpress 4使用Terran Interactive(包含Media Cleaner EZ),增加了可以在任何地方提供媒体的功能,包括一套功能强大的视频编辑、特技、音频、字幕、图像、合成和协同工作的工具。
从这些入手吧:
界面面板
编辑本段工具简介
第一个为插入图象的按钮,点击后,会d出对话框,标准对话框,选择想要的图象就行了。 第二个(横向走)为插入轮替图象,它d出的对话框会让选择两副图,以及鼠标点击时的连接等。作好后,用鼠标移动到图象上面,图象就会变成另外的一副图象,点击它,就会连接到另外一个页面上去。 第三个为表格,点击后,在d出的对话框中,添入想要的行数和列数以及表格边距颜色等。 第四个为插入表格式数据,可以将以前作成的表格形状的数据表,直接插入到网页中来,而不用做任何的修改。 第五个按钮为插入水平线按钮,插入后,在属性浮动面板上改改它的大小等。 第六个为导航条,和第二个差不多,也可以换图象,不过,比起第二个要复杂的多,但绝对简单。 第七个为插入层,这好象是 Dreamweaver 特有的特性,其他的网页编辑软件中都没有这项功能。插入的层可以位于页面的任何位置。拖动就行。 第八个为插入换行符,有时网页中的文字想让它换行,按回车又太大,用换行符就是一种不错的选择。 第九个为插入 Email,将联系用的 Email 插入网页中,只要填上 Email 地址就行。 第十个为插入日期,很简单,没有什么好说的。 第十一个为插入 Flash按钮,Flash 是现在网页中新兴的一种多媒体,有动画,有声音,但文件很小,极适合在网上传播。 第十二个为插入 Shockwave 按钮,做好了的 Shockwave 直接就可以插到这儿来。 第十三个为插入制作人,亲自制作的东西不想留名吗?点它就行。 第十四为插入 Firework 按钮,Firework 是 Macromedia 公司的又一个产品,具有制作动画图象等动态功能。也是专门为网页制作设计的。 第十五为插入 Java 语言编写的 Applet 小程序按钮。 第十六为插入 Active X控件用的按钮。 第十七为插入插件用的按钮,这儿可以插入别的插件,上面未包括的。 第十八未插入服务器端接口联系的按钮。
编辑本段组的按钮
插入框架
第一个按钮为插入框架按钮,为插入下面的那些按钮作准备。这下面的按钮选项包括:文本框,按钮,多选按钮,单选按钮,列表,文件域,图象域,隐含域,跳转菜单等交互式网页要用到的组件,假如要制作一个交互式的网页像留言薄什么的,用它做,非常的方便快捷。
其他按钮
它还有几个选项组,但都不是那么常用了,一个就是它 Character 组它是常用符号组面板,里面为收集了最长用的符号,这些,通过手工直接写,是非常麻烦的事,因为它们是源码了,而这儿,可以给直接的转换成为源码,插入就成。而 Frames 组,则是对页面的分页,也就是分窗口,将一个浏览器窗口分成几个窗口,在每个窗口里加入不同网页,来达到不同的效果。它可以分的总类也如下,可以从图上直接看出来,非常的方便与快捷。而 Head 组则是在网页“head”和“/head”之间加入必要的语句,可以是连接,可以是关键字,也可以是描述性的语句,还可以规定网页的刷新频率等。Invisible 组则是插入网页中看不见的元素了,比如说:换行符,回车符等不可见的符号。主要由这个控制面板来插入。
编辑本段使用方法
网页制作
新建方法,就不用多说,一般软件中的新建方法在这儿同样使用,点击菜单 File 中的 New 就行了,或者按 Ctrl+N 也行。 在这儿就可以插入文字,图象,层等,反正都随,是不是也是所见既所得。假如想看一下它的源文件,可以点击右下角的“〈〉”标记,也可以点击启动面板中的最后一个选项。就会d出来一个小窗口如图:也可以打开外部编辑器来编辑它的源代码,比如说记事本。 只要点一下“External Editor”按钮,Wrap选项为换行,当不想横向拉动滚动条,把它选上,文字就自动会换行了,另外一个选项为行号选项,当选上它是,左边将会出项行号,这样特别便于查找,去掉后,就与普通的记事本没有什么区别了。编辑好后,关了它就可以了。
构建站点
所有设计好的网页,在放到网上去以前,都需要把它组建好,以便于上传,在本地机上就要组织好,而 DreamWeaver 也把这想到了,点击启动面板上的 Site 选项,就会d出站点管理窗口,和文件浏览器差不多,在这儿,可以增加文件夹,删减文件,文件改名等等,只要是文件浏览器能干的事,它都能干。并且可以清楚地看到,哪个文件连接到了哪个文件,哪些文件是并列的关系,那些文件是父子关系。所做的第一步是先建立一个本地站点根目录。然后选择“New Site”打开对话框,在“Local Root Folder”中,输入本地站点根目录的位置。然后输入 >
以上就是关于小程序怎么设置rotate的起始位置全部的内容,包括:小程序怎么设置rotate的起始位置、急需一段java小程序、毕业设计,用matlab GUI界面做一个小程序,要求输入一个集合公式(离散数学内容),自动画出其文氏图。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)