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

📄 imagetransformtab.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.*;import org.eclipse.swt.layout.*;import org.eclipse.swt.widgets.*;/** * This tab demonstrates transformations, such as scaling, rotation, and * invert.  It allows the user to specify values for scaling and rotation. */public class ImageTransformTab extends GraphicsTab {	private Spinner rotateSpinner, scaleSpinnerX, scaleSpinnerY;	private Button invertButton;/** * Constructor * @param example A GraphicsExample */public ImageTransformTab(GraphicsExample example) {	super(example);}public String getCategory() {	return GraphicsExample.getResourceString("Transform"); //$NON-NLS-1$}public String getText() {	return GraphicsExample.getResourceString("Image"); //$NON-NLS-1$}public String getDescription() {	return GraphicsExample.getResourceString("TransformImgDescription"); //$NON-NLS-1$}/** * This method creates the controls specific to the tab. The call to the * createControlPanel method in the super class create the controls that are * defined in the super class. *  * @param parent The parent composite  */public void createControlPanel(Composite parent) {		Composite comp;	GridLayout gridLayout = new GridLayout(2, false);		// create spinner for the rotation angle	comp = new Composite(parent, SWT.NONE);	comp.setLayout(gridLayout); 	new Label(comp, SWT.CENTER).setText(GraphicsExample.getResourceString("Rotate")); //$NON-NLS-1$	rotateSpinner = new Spinner(comp, SWT.BORDER | SWT.WRAP);	rotateSpinner.setSelection(0);	rotateSpinner.setMinimum(0);	rotateSpinner.setMaximum(360);	rotateSpinner.setIncrement(10);	rotateSpinner.addListener(SWT.Selection, new Listener() {		public void handleEvent(Event event) {					example.redraw();		}	});		// create a slider for scaling along the x axis	comp = new Composite(parent, SWT.NONE);	comp.setLayout(gridLayout);		new Label(comp, SWT.CENTER).setText(GraphicsExample.getResourceString("xscale")); //$NON-NLS-1$	scaleSpinnerX = new Spinner(comp, SWT.BORDER | SWT.WRAP);	scaleSpinnerX.setDigits(2);	scaleSpinnerX.setMinimum(1);	scaleSpinnerX.setMaximum(500);	scaleSpinnerX.setSelection(75);	scaleSpinnerX.addListener(SWT.Selection, new Listener() {		public void handleEvent(Event event) {					example.redraw();		}	});		// create a slider for scaling along the y axis	comp = new Composite(parent, SWT.NONE);	comp.setLayout(gridLayout);	new Label(comp, SWT.CENTER).setText(GraphicsExample.getResourceString("yscale")); //$NON-NLS-1$	scaleSpinnerY = new Spinner(comp, SWT.BORDER | SWT.WRAP);	scaleSpinnerY.setDigits(2);	scaleSpinnerY.setMinimum(1);	scaleSpinnerY.setMaximum(500);	scaleSpinnerY.setSelection(75);	scaleSpinnerY.addListener(SWT.Selection, new Listener() {		public void handleEvent(Event event) {					example.redraw();		}	});		// create a button for "invert"	comp = new Composite(parent, SWT.NONE);	comp.setLayout(new GridLayout());	invertButton = new Button(comp, SWT.TOGGLE);	invertButton.setText(GraphicsExample.getResourceString("Invert")); //$NON-NLS-1$	invertButton.addListener(SWT.Selection, new Listener() {		public void handleEvent(Event event) {					example.redraw();		}	});}/* (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();	Image image = GraphicsExample.loadImage(device, GraphicsExample.class, "ace_club.jpg"); 	Transform transform = new Transform(device);		// scale image	transform.scale(scaleSpinnerX.getSelection()/100f, scaleSpinnerY.getSelection()/100f);		// rotate on center of image	Rectangle rect = image.getBounds();	transform.translate(rect.width/2, rect.height/2);	transform.rotate(rotateSpinner.getSelection());	transform.translate(-rect.width/2, -rect.height/2);		if(invertButton.getSelection()){		transform.invert();	}		gc.setTransform(transform);		gc.drawImage(image, 0, 0);	gc.drawRoundRectangle(0, 0, image.getBounds().width, 								image.getBounds().height, 22, 22);	transform.dispose();	image.dispose();}}

⌨️ 快捷键说明

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