هذا المنتج:
int[] createCircle(int radius, int centerX, int centerY) {
int[] point = new int[360 * 2];
ل(int i=0;i<360;i++) {
point[i*2] = centerX + (int)(radius * Math.cos(Math.toRadians(i)));
point[i*2+1] = centerY + (int)(radius * Math.sin(Math.toRadians(i)));
}
نقاط العودة
}
Point originalPosition = null;
رينجشيل العامة () {
عرض العرض النهائي = عرض جديد ()؛
Shell Shell النهائي = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP);
shell.setBackground(display.getSystemColor(SWT.COLOR_DARK_MAGENTA));
منطقة المنطقة = منطقة جديدة ()؛
Region.add(createCircle(100, 100, 100));
Region.subtract(createCircle(50, 100, 100));
shell.setRegion(region);
shell.addMouseListener(new MouseListener() {
الماوس الفراغي العامDoubleClick(MouseEvent e) {
dispose();
}
الماوس العام الفارغ (MouseEvent e) {
originalPosition = new Point(ex, ey);
}
الماوس العام الفارغ (MouseEvent e) {
originalPosition = null;
}
});
shell.addMouseMoveListener(new MouseMoveListener() {
حركة باطلة عامة (MouseEvent e) {
if(originalPosition == null) return;
نقطة النقطة = Display.map(shell, null, ex, ey);
shell.setLocation(point.x - originalPosition.x, point.y - originalPosition.y);
System.out.println("تم النقل من: " + originalPosition + " إلى " + point);
}
});
مستطيل RegionBounds = Region.getBounds();
shell.setSize(regionBounds.width, RegionBounds.height);
shell.open();
بينما (!shell.isDispose()) {
إذا (!display.readAndDispatch()) {
Display.sleep();
}
}
dispose();
Region.dispose();
}
public static void main(String[] args) {
new RingShell();
}
}