Java Array Zeichnung Skalieren und verschieben

Java-

Mitglied
Hallo,

ich habe einen Tannenbaum mit Arrays und g.drawLine() gezeichnet.
In den Arraypositionen habe ich die Koordinaten der Punkte festgelegt und sie dann anschließen alle mit
einer for schleife und g.drawLine() verbunden.

So nun soll ich diesen Tannenbaum an der X- oder Y-Achse durch eine Methode verschieben.
Außerdem soll ich den Tannenbaum durch eine weitere Methode vergrößern und verkleinern..

Mein Problem ist jetzt nur, dass das alles auch ohne diese Methoden bei mir funktioniert, ich müsste nur jeweils eine Variable ändern.., da ich bei den Koordinaten bereits gerechnet und alles vom Startpunkt abhängig gemacht habe

Wenn ich jetzt aber nehmen wir mal an reine Zahlen als Koordinaten genommen hätte, wie kann dann das geforderte umsetzen ?
 
Naja du verschiebst du Koordinaten eben um einen X oder Y Wert. Für das stauchen und ziehen musst du nur das Zentrum berechnen und eben die Koordinaten dementsprechend bewegen, wie sie zu dieser Mitte liegen.
 
also ich habe jetzt in der methode skalierung die größenänderung mit einer for schleife berechnet, nur wie bekomme ich jetzt das komplette array returned ?
 
zu dem stauchen und ziehen nochmal

wie genausoll das funktionieren ?
da muss ich ja eine beziehung von jeder koordinate zum dem Mittelpunkt herstellen oder ?
 
Hi alle zusammen,
ich habe das jetzt anders gelöst ist zwar etwas geschummelt aber ich zeichne meinen Baum in ein Image und Skaliere das dann immer 😀
Ich habe das ganze in einen JComponent gesteckt um es direkt auf einer Frame zu Zeichnen.
Java:
package WachsenderBaum;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;

import sun.awt.image.ToolkitImage;

import javax.swing.JComponent;

public class BaumLinien extends JComponent {
	private BufferedImage imgSource;
	private Image drawImage;
	private Point position=new Point(0,0);
	private Dimension size=new Dimension(110,210);
	private List<Point> punkte=new ArrayList<Point>();
	public BaumLinien(int x,int y,int width,int height) {
		addPunkte();	
		createImage();
		skale(width,height);
		setPosition(x,y);
	}
	private void setPosition(int x,int y) {
		position.x=x;
		position.y=y;
	}
	private void skale(int width, int height) {
		size.width=width;
		size.height=height;
		drawImage=imgSource.getScaledInstance(width, height, BufferedImage.SCALE_SMOOTH);
	}
	private void createImage() {
		imgSource = new BufferedImage(size.width, size.height,BufferedImage.TYPE_INT_RGB);
		Graphics g=imgSource.getGraphics();
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, size.width, size.height);
		for(int i=0;i<punkte.size();i++){
			Point p=punkte.get(i);
			g.setColor(Color.BLACK);
			if(i==0)
				g.drawLine(p.x, p.y, p.x, p.y);
			else{
				Point p1=punkte.get(i-1);
				g.drawLine(p.x, p.y, p1.x, p1.y);
			}
		}
		g.dispose();
		drawImage=imgSource.getScaledInstance(size.width, size.height, BufferedImage.SCALE_SMOOTH);
	}
	
	private void addPunkte(){
		punkte.add(new Point(40 ,200));
		punkte.add(new Point(60,200));
		punkte.add(new Point(60,150));
		punkte.add(new Point(40,150));
		punkte.add(new Point(40,200));
		punkte.add(new Point(40,150));
		punkte.add(new Point(0,150));
		punkte.add(new Point(50,50));
		punkte.add(new Point(100,150));
		punkte.add(new Point(40,150));
	}
	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.drawImage(drawImage, position.x, position.y, size.width,size.height,this);
	}
}
 

Zurück
Oben