📄 imagetransformtab.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 + -