定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP 界面
2010-04-26 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簻椤掋垺銇勯幇顖毿撻柟渚垮妼椤粓宕卞Δ鈧獮濠勭磽閸屾艾鈧懓顫濋妸鈺佺疅缂佸顑欓崥瀣煕椤愵偅绶氱紓鍐╂礋濮婂宕掑▎鎴М濠电姭鍋撻梺顒€绉甸幆鐐哄箹濞n剙濡肩紒鎰殜閺屸€愁吋鎼粹€茬敖婵炴垶鎸哥粔鐢稿Φ閸曨垰鍐€妞ゆ劦婢€濞岊亪姊虹紒妯诲蔼闁稿海鏁诲濠氭晲婢跺﹤宓嗛梺缁樺姈缁佹挳宕戦幘璇叉嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹

SWT 中有很多种方法得到 ImageData 实例。可以通过 ImageData 的构造函数初始化一个 ImageData 实例;也可以通过 ImageLoader 来得到 ImageData 实例;还可以通过已有的 Image 对象来获得。
通过图片可以获得如下窗体外形:
图 8. 图像外形多边形窗口
清单 6. 示例全部代码
private static Region getBackRegionFromImage(Display display, String image){
ImageLoader loader = new ImageLoader();
ImageData[] imageData = loader.load(image);
Region region = new Region(display);
ImageData data = imageData[0];
ImageData mask = data.getTransparencyMask();
Rectangle pixel = new Rectangle(0, 0, 1, 1);
for (int y = 0; y < mask.height; y++) {
for (int x = 0; x < mask.width; x++) {
if (mask.getPixel(x, y) != 0) {
pixel.x = data.x + x;
pixel.y = data.y + y;
region.add(pixel);
}
}
}
return region;
}
public static void main(String[] args) {
String backImage="icons/back.gif";
final Display display = new Display();
final Shell shell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP);
//
Region region = getBackRegionFromImage(display, backImage);
//
shell.setRegion(region);
Rectangle size = region.getBounds();
shell.setSize(size.width, size.height);
//
ImageLoader loader = new ImageLoader();
ImageData[] imageData = loader.load(backImage);
Image image = new Image(null, imageData[0]);
shell.setBackgroundImage(image);
//
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
image.dispose();
region.dispose();
display.dispose();
}
- ››定制个性化的对话框窗口类
- ››定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP ...
- ››定制基于 Visual studio 2005 平台 Windows CE(AR...
- ››定制版黑雨 blackra1n 越狱3.1.2 全系 iPhone
- ››RCP客户端实现保存不同用户的界面状态
- ››定制 Eclipse RCP 应用程序,第 1 部分: 可与 SWT...
- ››SWT 全接触
- ››定制AIX操作系统的shell环境
- ››定制任务栏上的系统菜单
- ››SWT/JFace开发入门指南之搭建开发环境
- ››定制一个灵活的struts框架
- ››RCPII:扩展通用工作台补充—小的改进
更多精彩
赞助商链接