SWT(JFace)体验之圆环状(戒指型)

2016-02-19 11:43 5 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享SWT(JFace)体验之圆环状(戒指型)教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - 编程语言 】

演示代码:
代码如下:

package swt_jface.demo1;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.MouseMoveListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.graphics.Region;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class RingShell {

int[] createCircle(int radius, int centerX, int centerY) {
int[] points = new int[360 * 2];
for(int i=0; i360; i++) {
points[i*2] = centerX + (int)(radius * Math.cos(Math.toRadians(i)));
points[i*2+1] = centerY + (int)(radius * Math.sin(Math.toRadians(i)));
}
return points;
}

Point originalPosition = null;
public RingShell() {

final Display display = new Display();
final Shell shell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP);
shell.setBackground(display.getSystemColor(SWT.COLOR_DARK_MAGENTA));

Region region = new Region();
region.add(createCircle(100, 100, 100));
region.subtract(createCircle(50, 100, 100));
shell.setRegion(region);

shell.addMouseListener(new MouseListener() {
public void mouseDoubleClick(MouseEvent e) {
display.dispose();
}
public void mouseDown(MouseEvent e) {
originalPosition = new Point(e.x, e.y);
}
public void mouseUp(MouseEvent e) {
originalPosition = null;
}
});

shell.addMouseMoveListener(new MouseMoveListener() {
public void mouseMove(MouseEvent e) {
if(originalPosition == null) return;
Point point = display.map(shell, null, e.x, e.y);
shell.setLocation(point.x - originalPosition.x, point.y - originalPosition.y);
System.out.println("Moved from: " + originalPosition + " to " + point);
}
});

Rectangle regionBounds = region.getBounds();
shell.setSize(regionBounds.width, regionBounds.height);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
region.dispose();
}

public static void main(String[] args) {
new RingShell();
}
}

来源:https://www.tulaoshi.com/n/20160219/1598334.html

延伸阅读
《龙之信条》demo初体验 标题画面有四个选项 序章:主控一盾一剑的战士,上来一只牛B哄哄的红龙放个豪火球飞走了,一路前进,场景很黑,可以把油灯挂在腰上照明,路上石碑可以召唤队友,组成三物理一法术标准队伍,杀掉几批哥布林和鸟人,出现大怪奇美拉,值得一提的是这个东西无论长相还是死法都和奎秃头宰那只神似...... 编辑模式:可以创建两...
标签: 黑暗之魂
《黑暗之魂》全戒指获取攻略 名称 效果 取得备注 小生命戒指 HP上升5% 初始的礼物 亚诺尔隆德,救下洋葱骑士后,洋葱骑士赠送 绿花戒指 精力回复速度上升 大树洞第一个营火处,往前走一点,视角往右看,下面会有个树洞,跳下去,在尸体上取得 哈维尔的戒指 装备重量1.5倍 游戏初期在牛头怪BOSS的塔往下走就能遇到哈维尔,击败后掉落 ...
什么是泛型 一种类型占位符,或称之为类型参数。我们知道在一个方法中,一个变量的值可以作为参数,但其实这个变量的类型本身也可以作为参数。泛型允许我们在调用的时候再指定这个类型参数是什么。在.net中,泛型能够给我们带来的两个明显好处是类型安全和减少装箱、拆箱。 类型安全和装箱、拆箱 作为一种类型参数,泛型很...
《信长之野望12革新》体验心得 <浪子韩柏提供 昨天晚到的《革新》,从下午6点知道半夜1点,重新开始游戏几次了,。总结了游戏感受!和大家分享,不正确的地方请包涵! 1:修[町并]尽量要修九宫格。就是可以满足周围8格都可以修设施的,这样才不浪费,因为町并有上限的,一定要在有限的町并数量的情况下,尽量的扩大设施的容量。 2:防御设施...
标签: 创意手工
Kanera是德国一家生产卫浴产品的公司,目前有3个产品,去年10月推出首个产品 KANERA 1 E ,后继的两款是 KANERA 1 H 和上图所示的 KANERA 1 D。Kanera 搪瓷脸盆最显眼的就是有机的几何形设计,让人体验水所蕴含的诗韵之美,给人丰富的感官意识,比如这些细节图所描绘的那样。Kanera 的产品是针对酒店及一...

经验教程

783

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部