⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alphatab.java

📁 SUN公司eclipse3.2.2经典例子
💻 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.*;import org.eclipse.swt.graphics.*;/** * This tab demonstrates alpha blending. It draws various shapes and images as * alpha values change. */public class AlphaTab extends AnimatedGraphicsTab {	/**	 * Value used in setAlpha API call. Goes from 0 to 255 and then starts over.	 */	int alphaValue;		/**	 * Value used in setAlpha API call. Goes from 0 to 255, then from 255 to 0	 * and then starts over.	 */	int alphaValue2;	boolean reachedMax = false;	int diameter;		/** random numbers used for positioning "SWT" */	int randX, randY;	Image alphaImg1, alphaImg2;	public AlphaTab(GraphicsExample example) {		super(example);	}		public String getCategory() {		return GraphicsExample.getResourceString("Alpha"); //$NON-NLS-1$	}	public String getText() {		return GraphicsExample.getResourceString("Alpha"); //$NON-NLS-1$	}		public String getDescription() {		return GraphicsExample.getResourceString("AlphaDescription"); //$NON-NLS-1$	}		public int getInitialAnimationTime() {		return 20;	}		public void dispose() {		if (alphaImg1 != null) {			alphaImg1.dispose();			alphaImg1 = null;		}		if (alphaImg2 != null) {			alphaImg2.dispose();			alphaImg2 = null;		}	}	public void next(int width, int height) {		alphaValue = (alphaValue+5)%255;				alphaValue2 = reachedMax ? alphaValue2 - 5 : alphaValue2 + 5;					if (alphaValue2 == 255) {			reachedMax = true;		} else if (alphaValue2 == 0) {			reachedMax = false;		}				diameter = (diameter + 10)%(width > height ? width : height);	}	/** 	 * Paint the receiver into the specified GC. 	 */	public void paint(GC gc, int width, int height) {		if (!example.checkAdvancedGraphics()) return;		Device device = gc.getDevice();		if (alphaImg1 == null) {			alphaImg1 = GraphicsExample.loadImage(device, GraphicsExample.class, "alpha_img1.png");			alphaImg2 = GraphicsExample.loadImage(device, GraphicsExample.class, "alpha_img2.png");			}		Rectangle rect = alphaImg1.getBounds();				gc.setAlpha(alphaValue);		gc.drawImage(alphaImg1, rect.x, rect.y, rect.width, rect.height, 				width/2, height/2, width/4, height/4);				gc.drawImage(alphaImg1, rect.x, rect.y, rect.width, rect.height, 				0, 0, width/4, height/4);		gc.setAlpha(255-alphaValue);		gc.drawImage(alphaImg2, rect.x, rect.y, rect.width, rect.height, 				width/2, 0, width/4, height/4);				gc.drawImage(alphaImg2, rect.x, rect.y, rect.width, rect.height, 				0, 3*height/4, width/4, height/4);				// pentagon		gc.setBackground(device.getSystemColor(SWT.COLOR_DARK_MAGENTA));		gc.fillPolygon(new int [] {width/10, height/2, 3*width/10, height/2-width/6, 5*width/10, height/2, 				4*width/10, height/2+width/6, 2*width/10, height/2+width/6});		gc.setBackground(device.getSystemColor(SWT.COLOR_RED));		// square		gc.setAlpha(alphaValue);		gc.fillRectangle(width/2, height-75, 75, 75);				// triangle		gc.setAlpha(alphaValue + 15);		gc.fillPolygon(new int[]{width/2+75, height-(2*75), width/2+75, height-75, width/2+(2*75), height-75});				// triangle		gc.setAlpha(alphaValue + 30);		gc.fillPolygon(new int[]{width/2+80, height-(2*75), width/2+(2*75), height-(2*75), width/2+(2*75), height-80});				// triangle		gc.setAlpha(alphaValue + 45);		gc.fillPolygon(new int[]{width/2+(2*75), height-(2*75), width/2+(3*75), height-(2*75), width/2+(3*75), height-(3*75)});				// triangle		gc.setAlpha(alphaValue + 60);		gc.fillPolygon(new int[]{width/2+(2*75), height-((2*75)+5), width/2+(2*75), height-(3*75), width/2+((3*75)-5), height-(3*75)});				// square		gc.setAlpha(alphaValue + 75);		gc.fillRectangle(width/2+(3*75), height-(4*75), 75, 75);				gc.setBackground(device.getSystemColor(SWT.COLOR_GREEN));				// circle in top right corner		gc.setAlpha(alphaValue2);		gc.fillOval(width-100, 0, 100, 100);				// triangle		gc.setAlpha(alphaValue + 90);		gc.fillPolygon(new int[]{width-300, 10, width-100, 10, width-275, 50});			// triangle		gc.setAlpha(alphaValue + 105);		gc.fillPolygon(new int[]{width-10, 100, width-10, 300, width-50, 275});				// quadrilateral shape		gc.setAlpha(alphaValue + 120);		gc.fillPolygon(new int[]{width-100, 100, width-200, 150, width-200, 200, width-150, 200});				// blue circles		gc.setBackground(device.getSystemColor(SWT.COLOR_BLUE));		int size = 50;		int alpha = 20;		for (int i = 0; i < 10; i++) {			gc.setAlpha(alphaValue + alpha);			if (i % 2 > 0) {				gc.fillOval(width-((i+1)*size), height-size, size, size);			} else {				gc.fillOval(width-((i+1)*size), height-(3*size/2), size, size);			}			alpha = alpha + 20;		}				// SWT string appearing randomly		gc.setAlpha(alphaValue2);		String text = GraphicsExample.getResourceString("SWT");		Font font = createFont(device, 100, SWT.NONE);		gc.setFont(font);				Point textSize = gc.stringExtent(text);		int textWidth = textSize.x;		int textHeight = textSize.y;				if (alphaValue2 == 0){			randX = (int)(width*Math.random());			randY = (int)(height*Math.random());			randX = (randX > textWidth) ? randX - textWidth : randX;			randY = (randY > textHeight) ? randY - textHeight : randY;		}				gc.drawString(text, randX, randY, true);		font.dispose();				// gray donut		gc.setAlpha(100);		Path path = new Path(device);		path.addArc((width-diameter)/2, (height-diameter)/2, diameter, diameter, 0, 360);		path.close();		path.addArc((width-diameter+25)/2, (height-diameter+25)/2, diameter-25, diameter-25, 0, 360);		path.close();		gc.setBackground(device.getSystemColor(SWT.COLOR_GRAY));		gc.fillPath(path);		gc.drawPath(path);		path.dispose();	}		/**	 * Creates a font using the specified arguments and returns it.	 * This method takes into account the resident platform.	 * 	 * @param face	 * 			The name of the font	 * @param points	 * 			The size of the font in point	 * @param style	 * 			The style to be applied to the font	 */	static Font createFont(Device device, int points, int style) {				if(SWT.getPlatform() == "win32") {			return new Font(device, "Verdana", points, style);			} else if (SWT.getPlatform() == "motif") {			return new Font(device, "Times", points, style);				} else if (SWT.getPlatform() == "gtk") {			return new Font(device, "Baekmuk Batang", points, style);				} else if (SWT.getPlatform() == "carbon") {			return new Font(device, "Verdana", points, style);		} else { // photon			return new Font(device, "Verdana", points, style);		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -