Rysowanie własnych kształtów

0

Tworzę program, w którym chcę rysować ruchem myszki litery w wyznaczonym oknie.

Na razie rysuje po JPanelu, w ktorym stworzyłem BufferedImage. W metodzie mouseDragged() (implementuje MouseMotionListener) mam image.setRGB(...) i repaint().
Niby działa, ale mam dwa problemy:

  • jak ruszam myszką zbyt szybko, to gubię niektóre piksele i mam narysowana literę tak jakby przerywaną linią :/
  • ta linia jest strasznie cienka i litera dziwnie wygląda

Ktoś ma pomysł jak poprawić te błędy albo ma inny, lepszy sposób rysowania myszką po oknie?

0

Zamieść kod źródłowy.
Podejrzewam, że problem da się rozwiązać przez podwójne buforowanie.

0
public class Rysowana extends JPanel {
        private BufferedImage image;
	
	public Rysowana() {
		super();
		setLayout(null);
		setBackground(Color.white);
		setBounds(0, 0, 300, 400);
		image = new BufferedImage(300, 400, BufferedImage.TYPE_INT_RGB);
		addMouseMotionListener(this);
	}
	
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2d = (Graphics2D) g;
		g2d.drawImage(image, 0, 0, null);
	}

	public void mouseDragged(MouseEvent e) {
		if(e.getX()>=0 && e.getX()<300 && e.getY()>=0 && e.getY()<400) {
			image.setRGB(e.getX(), e.getY(), new Color(0, 0, 0).getRGB());
			repaint();
		}
	} 
0

Cześć.
Wiesz co? U mnie pokazuje tylko czarny prostokąt i nic nie rysuje.
Na pewno przesłałeś cały kod?

0

Tzn. miałem ejszcze na początku narysowanie bialego prostokata w image, aby to czarne rysowanie było widoczne.
Wklejając na stronę usunąlem rysowanie tego prostokąta i zapomniałem zmienić jednocześnie kolor rysowania ;)
Ale w kazdym razie już sobie poradziłem z moimi problemami, więc dzieki za pomoc ;P

0

Hej.
To dobrze.
Napisz może, jak tego dokonałeś - może ktoś kiedyś skorzysta z twojego doświadczenia :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1