JAVA kreslící vrstva nad obrázkem
zdravim, tak v ramci seznamovani textuju co JAVA umi a ted bych si predstavoval neco, ze nactu napríklad obrázek na který se bude dát neco nakreslit (jednou barvou staci) pomoci myši, naprosto volně, o určité šířce. Tato polyline bude existovat jen v tom case a pri dalsim nactení programu neni treba aby byla uchovana.
Mate nekdo s necim podobnym zkusenosti?
Re: JAVA kreslící vrstva nad obrázkem
Cest je určitě vícero, ale mě stačila vždy ta základní
http://java.sun.com/docs/books/tutorial/2d/index.html
To co chceš viz. Working with images
Re: JAVA kreslící vrstva nad obrázkem
jo to vim to kresleni, me spis zajima to jak na sebe napasovat ty vrstvy, nebo nejakym jednoduzsim zpusobem to udelat...
Re: JAVA kreslící vrstva nad obrázkem
Tak, když už jsem to nakousl nadhodím ti menší sample:
Uděláš si víc Image, do kterých si kreslíš to co chceš. 1 Image = 1 vrstva. Kvůli blikání je lepší ještě zařídit doublebuffer, ale ten snad i JFrame má. Teď se nebudu hádat. Nechce se mi prolézat zdrojáky Javy :)
No nakonec stačí překreslit tvoje vrstvy přes sebe (kresli odspoda nahoru samozřejmě, jako v reálu).
Když horní vrstvy úplně nevyplníš, tak to funguje nejspíš jak si přeješ.
Kód:
package javalayers;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
/**
*
* @author Mike
*/
public class Main extends JFrame {
BufferedImage background;
BufferedImage drawLayer;
BufferedImage doubleBuffer;
public Main() {
this.background = new BufferedImage(400,400,BufferedImage.TYPE_INT_ARGB);
this.drawLayer = new BufferedImage(400,400,BufferedImage.TYPE_INT_ARGB);
this.doubleBuffer = new BufferedImage(400,400,BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = (Graphics2D) drawLayer.getGraphics();
g2.drawString("Hello world, I am drawing layer", 100,100);
g2 = (Graphics2D) background.getGraphics();
g2.setColor(new Color(200,200,200)); //nastavim kreslici barvu
g2.fillRect(0, 0,400, 400); //vyplnim pozadi nejakou barvou
}
@Override
public void paint(Graphics g) {
super.paint(g);
doubleBuffer.flush();
Graphics2D g2 = (Graphics2D) doubleBuffer.getGraphics();
g2.drawImage(background, null, 0, 0);
g2.drawImage(drawLayer, null, 0, 0);
g.drawImage(doubleBuffer, 0, 0, null);
}
public static void main(String[] args) {
Main m = new Main();
m.setSize(new Dimension(400,400));
m.setVisible(true);
m.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}