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

📄 airbrushtool.java

📁 eclipse 的程序源码
💻 JAVA
字号:
/******************************************************************************* * Copyright (c) 2000, 2005 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.paint;import java.util.Random;import org.eclipse.swt.graphics.*;/** * An airbrush tool. */public class AirbrushTool extends ContinuousPaintSession implements PaintTool {	private ToolSettings settings;	private Random random;	private int cachedRadiusSquared;	private int cachedNumPoints;		/**	 * Constructs a Tool.	 * 	 * @param toolSettings the new tool settings	 * @param paintSurface the PaintSurface we will render on.	 */	public AirbrushTool(ToolSettings toolSettings, PaintSurface paintSurface) {		super(paintSurface);		random = new Random();		setRetriggerTimer(10);		set(toolSettings);	}		/**	 * Sets the tool's settings.	 * 	 * @param toolSettings the new tool settings	 */	public void set(ToolSettings toolSettings) {		// compute things we need to know for drawing		settings = toolSettings;		cachedRadiusSquared = settings.airbrushRadius * settings.airbrushRadius;		cachedNumPoints = 314 * settings.airbrushIntensity * cachedRadiusSquared / 250000;		if (cachedNumPoints == 0 && settings.airbrushIntensity != 0)			cachedNumPoints = 1;	}	/**	 * Returns the name associated with this tool.	 * 	 * @return the localized name of this tool	 */	public String getDisplayName() {		return PaintExample.getResourceString("tool.Airbrush.label");	}	/*	 * Template method for drawing	 */	protected void render(Point point) {		// Draws a bunch (cachedNumPoints) of random pixels within a specified circle (cachedRadiusSquared).		ContainerFigure cfig = new ContainerFigure();		for (int i = 0; i < cachedNumPoints; ++i) {			int randX, randY;			do {				randX = (int) ((random.nextDouble() - 0.5) * settings.airbrushRadius * 2.0);				randY = (int) ((random.nextDouble() - 0.5) * settings.airbrushRadius * 2.0);			} while (randX * randX + randY * randY > cachedRadiusSquared);			cfig.add(new PointFigure(settings.commonForegroundColor, point.x + randX, point.y + randY));		}		getPaintSurface().drawFigure(cfig);	}}

⌨️ 快捷键说明

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