📄 cardstab.java
字号:
/******************************************************************************* * Copyright (c) 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/package org.eclipse.swt.examples.graphics;import org.eclipse.swt.graphics.*;/** * This tab demonstrates various transformations, such as scaling, rotation, and * translation. */public class CardsTab extends AnimatedGraphicsTab { float movClubX, movClubY, movDiamondX, movDiamondY, movHeart, movSpade; float inc_club = 5.0f; float inc_diamond = 5.0f; float inc_hearts = 5.0f; float inc_spade = 5.0f; float scale, scaleWidth; int rotationAngle = 0; float scaleArg = 0; float heartScale = 0.5f; float spadeScale = 0.333f; int clubWidth, diamondWidth, heartWidth, spadeHeight; Image ace_club, ace_spade, ace_diamond, ace_hearts;/** * Constructor * @param example A GraphicsExample */public CardsTab(GraphicsExample example) { super(example);}public String getCategory() { return GraphicsExample.getResourceString("Transform"); //$NON-NLS-1$}public String getText() { return GraphicsExample.getResourceString("Cards"); //$NON-NLS-1$}public String getDescription() { return GraphicsExample.getResourceString("CardsDescription"); //$NON-NLS-1$}public void dispose() { if (ace_club != null) { ace_club.dispose(); ace_club = null; ace_spade.dispose(); ace_spade = null; ace_diamond.dispose(); ace_diamond = null; ace_hearts.dispose(); ace_hearts = null; }}public void next(int width, int height) { rotationAngle = (rotationAngle+10)%360; // scaleVal goes from 0 to 1, then 1 to 0, then starts over scaleArg = (float)((scaleArg == 1) ? scaleArg - 0.1 : scaleArg + 0.1); scale = (float)Math.cos(scaleArg); movClubX += inc_club; movDiamondX += inc_diamond; movHeart += inc_hearts; movSpade += inc_spade; scaleWidth = (float) ((movClubY/height)*0.35 + 0.15); movClubY = 2*height/5 * (float)Math.sin(0.01*movClubX - 90) + 2*height/5; movDiamondY = 2*height/5 * (float)Math.cos(0.01*movDiamondX) + 2*height/5; if (movClubX + clubWidth*scaleWidth > width) { movClubX = width - clubWidth*scaleWidth; inc_club = -inc_club; } if (movClubX < 0) { movClubX = 0; inc_club = -inc_club; } if (movDiamondX + diamondWidth*scaleWidth > width) { movDiamondX = width - diamondWidth*scaleWidth; inc_diamond = -inc_diamond; } if (movDiamondX < 0) { movDiamondX = 0; inc_diamond = -inc_diamond; } if (movHeart + heartWidth*heartScale > width) { movHeart = width - heartWidth*heartScale; inc_hearts = -inc_hearts; } if (movHeart < 0) { movHeart = 0; inc_hearts = -inc_hearts; } if (movSpade + spadeHeight*spadeScale > height) { movSpade = height - spadeHeight*spadeScale; inc_spade = -inc_spade; } if (movSpade < 0) { movSpade = 0; inc_spade = -inc_spade; }}/* (non-Javadoc) * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) */public void paint(GC gc, int width, int height) { if (!example.checkAdvancedGraphics()) return; Device device = gc.getDevice(); if (ace_club == null) { ace_club = GraphicsExample.loadImage(device, GraphicsExample.class, "ace_club.jpg"); ace_spade = GraphicsExample.loadImage(device, GraphicsExample.class, "ace_spade.jpg"); ace_diamond = GraphicsExample.loadImage(device, GraphicsExample.class, "ace_diamond.jpg"); ace_hearts = GraphicsExample.loadImage(device, GraphicsExample.class, "ace_hearts.jpg"); } clubWidth = ace_club.getBounds().width; diamondWidth = ace_diamond.getBounds().width; heartWidth = ace_hearts.getBounds().width; spadeHeight = ace_spade.getBounds().height; Transform transform; // ace of clubs transform = new Transform(device); transform.translate((int)movClubX, (int)movClubY); transform.scale(scaleWidth, scaleWidth); // rotate on center of image Rectangle rect = ace_club.getBounds(); transform.translate(rect.width/2, rect.height/2); transform.rotate(rotationAngle); transform.translate(-rect.width/2, -rect.height/2); gc.setTransform(transform); transform.dispose(); gc.drawImage(ace_club, 0, 0); // ace of diamonds transform = new Transform(device); transform.translate((int)movDiamondX, (int)movDiamondY); transform.scale(scaleWidth, scaleWidth); gc.setTransform(transform); transform.dispose(); gc.drawImage(ace_diamond, 0, 0); // ace of hearts transform = new Transform(device); transform.translate(movHeart, height/2); transform.scale(heartScale, 0.5f*scale); gc.setTransform(transform); transform.dispose(); gc.drawImage(ace_hearts, 0, 0); // ace of spades transform = new Transform(device); transform.translate(movSpade, movSpade); transform.scale(0.5f*scale, spadeScale); gc.setTransform(transform); transform.dispose(); gc.drawImage(ace_spade, 0, 0);}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -