Canvas主要用于显示图像,既可以在Canvas上画图,也可以将图片显示于其中。
下面通过一个小程序,来演示Canvas使用的3个主要方面:设置图像、更换图像、清除图像。
其代码如下:
package swt;
import java.io.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
public class HelloWorld {
public static void main(String[] args) {
final Display display=Display.getDefault();
final Shell shell=new Shell();
shell.setLayout(new RowLayout());
final Canvas canvas=new Canvas(shell,SWT.BORDER);
//监听canvas的重绘事件
canvas.addPaintListener(new PaintListener(){
public void paintControl(final PaintEvent event){
Image image=(Image)canvas.getData();
if(image!=null){
event.gc.drawImage(image,10,10);//定位图像左上角距canvas左上角的距离
}
}
});
final Image refreshImage=new Image(display,"E:\\workspace\\canvas\\src\\swt\\1.jpg");
final Image nextIamge=new Image(display,"E:\\workspace\\canvas\\src\\swt\\2.jpg");
Button button1=new Button(shell,SWT.NONE);
button1.setText("大力水手");
button1.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
canvas.setData(nextIamge);
canvas.redraw();
}
});
Button button2=new Button(shell,SWT.NONE);
button2.setText("海绵宝宝");
button2.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
canvas.setData(refreshImage);
canvas.redraw();
}
});
Button clearButton=new Button(shell,SWT.NONE);
clearButton.setText("清除图像");
clearButton.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
canvas.setData(null);
canvas.redraw();
}
});
shell.layout();
shell.open();
shell.setSize(300, 200);
while(!shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
分享到:
相关推荐
SWT中实现shell Canvas Composite等控件的背景透明
里面有运行包和源代码。目前只是做了个大概很多细节没有处理。 如果有好的建议欢迎提出。大家一起努力! 我的邮箱是cuiran2001@163.com
org.eclipse.swt.SWT.class org.eclipse.swt.SWTError.class org.eclipse.swt.SWTException.class org.eclipse.swt.accessibility.ACC.class org.eclipse.swt.accessibility.Accessible.class org.eclipse.swt....
·修正开始/暂停监视切换时有时会报空指针异常的错误 2. 功能添加: ·实现静止时图片的缩放 3. 核心调整: ·动态\静止开关中对图片处理的逻辑改变,以实现静止时图片的缩放功能 ·...
private Canvas canvas; private Rectangle clickArea; private static int N=20; private static int DIV=15; private Rectangle[][] rect=new Rectangle[N][N]; private String[][] flags=new String[N][N];...
org.eclipse.swt.graphics包(package),包含了管理图形资源的类。只要实现了org.eclipse....画布(Canvas)控件,因为不同的绘画操作,拥有很多构造风格常量允许你指定何时以及如何产生绘画,本篇也将展示这些东西。
插件开发核心技术,主要介绍插件开发的核心知识要点, 包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective) ...SWT 画布 Canvas,处理所有图像显示及交互事件 (本地SWT层)
SWT下的GLCanvas源码,实现渲染OPENGGL的canvas
核心调整: ·添加SWT/JFace的jar包到工程lib目录下 ·BasicWindow添加对鼠标移动点击的事件监听,以实现组件可用鼠标拖拽功能 ·BasicWindow添加在屏幕中央显示/随鼠标位置显示方法 ·更改屏幕...
8.1 样式文本(StyledText) 8.2 SWT表格(Table)的设计 8.3 SWT树(Tree)的设计 8.4画布Canvas与图像的使用 8.5剪切板的使用及SWT的拖放操作
第10章 SWT中的拖放支持 211 10.1 可拖放的树 211 10.2 拖放原理概述 214 10.3 拖放源(DragSource) 215 10.3.1 创建拖放源对象 215 10.3.2 定义拖放源数据传输类型 215 10.3.3 处理拖放源事件 216 ...
代码如下: ImageViewer.java 代码如下:package swt_jface.demo11; import org.eclipse.swt.SWT; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt...
适用于SWT 4.18.4.5的Glimmer DSL JRuby桌面开发GUI框架 是用编写的本机GUI跨平台桌面开发库,它是的OS线程更快的JVM版本。 的主要创新是声明性 ,它依靠强大的实现了桌面应用程序用户界面的高效生产。 还通过...
用eclipse、SWT写的打飞机游戏,canvas的swt.doublebuffer属性感觉很好用,不知道swing里面有没有类似的功能。看到有人说没有原码,我确实没把原码放上来,不好意思,就把资源分去掉算了。
swt常有控件入门demo Button1.java Canvas1.java Combo1.java Menu1.java SashForm1.java ScrolledComposite1.java SimpleEditor1.java SimpleEditor2.java Slider1.java TabFolder1.java ToolBarExample.java ...
package com.example.swt369.simpleclock; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.support.annotation.Nullable; import android.util....