![]() |
|
|
|||||||
| AWT, Swing & SWT Themen zur Programmierung von Benutzer-Oberflächen (GUI) sowie zur Grafikprogrammierung (2D / 3D) |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 26.01.2005
Beiträge: 167
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hallo!
Der Titel ist etwas unglücklich geworden. Ich versuche Folgendes. Ein Rechteck soll scalierbar, rotierbar, und verschiebbar sein. Einzeln geht es schon (so ungefähr) Wie bekomme ich es hin, dass ich die einzelnen transformen beliebig oft und in beliebiger reihenfolge auf mein rechteck anwenden kann?? Code:
public void paintComponent(Graphics g){
super.paintComponent(g);
g2d = (Graphics2D) g;
g2d.setColor(Color.GREEN);
//Affine Transform erzeugen
AffineTransform as = new AffineTransform();
//ein Rechteck malen
Iterator zaehler = rectList.iterator();
while (zaehler.hasNext())
{
g2d.setColor(Color.GREEN);
Point punktrect = (Point) zaehler.next();
rechteck = new Rectangle2D.Double(punktrect.x,punktrect.y,rectWidth,rectHeight);
g2d.draw(rechteck);
}
//Rechteck vergrössern odern verkleinern
as.scale(scaleWidth, scaleHeight);
double transposx = rechteck.x - rechteck.x * scaleWidth;
double transposy = rechteck.y - rechteck.y * scaleHeight;
as.translate(transposx/scaleWidth,transposy/scaleHeight);
g2d.setTransform(as);
//g2d.draw(rechteck);
//rechteck rotieren
as.rotate(theta,rechteck.getCenterX(), rechteck.getCenterY());
g2d.setTransform(as);
//g2d.draw(rechteck);
//rechteck verschieben
as.translate(transx,transy);
g2d.transform(as);
g2d.draw(rechteck);
}
Code:
public void mouseClicked(MouseEvent e) {
if(e.getSource()== mal & rect.isSelected()== true){
mal.rectList.clear();
mal.scaleHeight =0;
mal.scaleWidth =0;
mal.getRectPoint(e.getPoint());
}
repaint();
}
......
public void mouseDragged(MouseEvent e) {
if(e.getSource() == mal & scale.isSelected()==true ){
mal.scalegraph(e.getPoint());
mal.rectList.clear();
}
if(e.getSource()==mal & rotate.isSelected()==true){
mal.rotategraph(e.getPoint());
}
if(e.getSource()==mal & move.isSelected()==true){
mal.getLocationPoints(e.getPoint());
}
repaint();
}
|
|
|
| #2 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 26.01.2005
Beiträge: 167
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Ich merke gerade, daß bei
Code:
as.rotate(theta,rechteck.getCenterX(), rechteck.getCenterY());
g2d.setTransform(as);
woran liegt es? |
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| AffineTransform (setToScale) | r74 | AWT, Swing & SWT | 3 | 19.02.2008 09:27 |
| affineTransform und jPanel? | Lundner | AWT, Swing & SWT | 1 | 07.04.2007 23:41 |
| AffineTransform | Deployment | 1 | 24.03.2007 19:14 | |
| AffineTransform rotate | raffnix | AWT, Swing & SWT | 0 | 28.05.2005 20:14 |
| AffineTransform | Kerberus | Spiele- und Multimedia-Programmierung | 2 | 23.02.2004 19:37 |