Witam. Mam pewien problem. Mam do napisanie do szkoły Painta na wyższą ocenę :)
Otóż: Problem polega na tym że nie widzę co rysuję. Tzn w zwykłej linii jest ok ale przy prostej linii i prostokącie już tak nie jest. Chodzi mi o to że jak jeszcze nie puszcze klawisza myszki to żeby ten prostokąt / linia prosta była widoczna. Jest dopiero widoczna linia prosta / prostokąt po puszczeniu klawisza myszki.
Fragment kodu:
public void paint(Graphics g)
{
if (obraz == null)
{
obraz = createImage(800 , 600);
g2d = (Graphics2D)obraz.getGraphics();
clear();
}
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING , RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(obraz , 0 , 0 , null);
}
public void mouseMoved(MouseEvent e){}
public void mouseDragged(MouseEvent e)
{
int b = e.getModifiersEx();
if (b == MouseEvent.BUTTON1_DOWN_MASK)
{
if (czyGumka == true) g2d.setStroke(new BasicStroke(15));
if (czyGumka == false) g2d.setStroke(new BasicStroke(Integer.parseInt(cGruboscLinii.getSelectedItem())));
if (cTypPedzla.getSelectedItem() == "Linia")
{
currentX = e.getX();
currentY = e.getY();
if (g2d != null) g2d.drawLine(oldX , oldY , currentX , currentY);
repaint();
oldX = currentX;
oldY = currentY;
}
if (cTypPedzla.getSelectedItem() == "Prostokat")
{
end = e.getPoint();
rect.setFrameFromDiagonal(start, end);
repaint();
}
czyZmiany = true;
}
}
public void mouseReleased(MouseEvent e)
{
int b = e.getButton();
if (b == MouseEvent.BUTTON1)
{
if (cTypPedzla.getSelectedItem() == "Linia")
{
oldX = e.getX();
oldY = e.getY();
}
if (cTypPedzla.getSelectedItem() == "Linia prosta")
{
end = e.getPoint();
g2d.drawLine(start.x , start.y , end.x , end.y);
repaint();
}
if (cTypPedzla.getSelectedItem() == "Prostokat")
{
end = e.getPoint();
rect.setFrameFromDiagonal(start , end);
g2d.draw(rect);
repaint();
}
}
}
public void mousePressed(MouseEvent e)
{
int b = e.getButton();
if (b == MouseEvent.BUTTON1)
{
if (cTypPedzla.getSelectedItem() == "Linia")
{
oldX = e.getX();
oldY = e.getY();
}
if (cTypPedzla.getSelectedItem() == "Linia prosta")
{
start = e.getPoint();
}
if (cTypPedzla.getSelectedItem() == "Prostokat")
{
start = e.getPoint();
}
}
}
Proszę o pomoc :)
Z góry dziękuję :)
EDIT: i mam jeszcze pytanie. Jak zrobić koło. Tzn tak samo że klikam, przeciągam, widzę wtedy, puszczam i sie ładne koło rysuje :)