Witam,
Mam pytanie czy jest możliwe uzyskanie takiego efektu (załącznik) w javie? Może istnieje gotowa biblioteka albo coś? Jeśli ktoś byłby na tyle chętny żeby podzielić się swoją wiedzą to zapraszam :)
Pozdrawiam.
Czy jakaś biblioteka to nie wiem ( szukałbym kombinacji słów github library target board - może jakaś graficzna będzie, kto tam wie).
Na piechotę:
możesz sobie narysować podkład z tymi kręgami i siatką ( chociażby w paint, serio), i wczytać to jako bitmapę na obiekcie Canvas.
Później rysuj na tym co chcesz.
Albo Canvas, jakiś algorytm i rysujesz serię okręgów, później siatka.
Może doprecyzuję, chodzi o to żeby wprowadzić współrzędne i on zaznaczy obszar np 5km kolor czerwony 10km klor zółty 15km kolor zielony.
Coś jak zaznaczanie obszaru na mapie, w sumie to chodzi o to samo tylko w BARDZO uproszczonej formie. Samo narysowanie ovali nie jest jakimś problemem ale nie potrafię pokolorować obszarów między nimi.
Błękitny Kura napisał(a):
Może doprecyzuję, chodzi o to żeby wprowadzić współrzędne i on zaznaczy obszar np 5km kolor czerwony 10km klor zółty 15km kolor zielony.
W programowaniu chodzi o rozbijanie problemów na mniejsze.
Umiesz, w ogóle narysować dowolnej wielkości kropkę?
Albo cokolwiek?
Najpierw trzeba pokombinować z bardzo prostymi elementami, a potem z nich robisz większy.
Błękitny Kura napisał(a):
Coś jak zaznaczanie obszaru na mapie, w sumie to chodzi o to samo tylko w BARDZO uproszczonej formie. Samo narysowanie ovali nie jest jakimś problemem ale nie potrafię pokolorować obszarów między nimi.
No to pokaż co masz na razie i będzie wiadomo o co chodzi:)
Błękitny Kura napisał(a):
Coś jak zaznaczanie obszaru na mapie, w sumie to chodzi o to samo tylko w BARDZO uproszczonej formie. Samo narysowanie ovali nie jest jakimś problemem ale nie potrafię pokolorować obszarów między nimi.
Jeśli okręgi mają wspólny środek, to malujesz koła od największego do najmniejszego.
Tak jak wcześniej napisałem, rysowanie prostych elementów, nadawanie im koloru nie jest problemem. Problem pojawia się w momencie gdy namaluję 3 koła i chcę pokolorować obszar między nimi żeby to lepiej wyglądało.
Błękitny Kura napisał(a):
Tak jak wcześniej napisałem, rysowanie prostych elementów, nadawanie im koloru nie jest problemem. Problem pojawia się w momencie gdy namaluję 3 koła i chcę pokolorować obszar między nimi żeby to lepiej wyglądało.
Yyyy, co rozumiesz przez obszar między nimi?
Tam nie ma między nimi żadnego obszaru.
Proszę załącznik obrazuje o co mi chodzi:)
Zdefiniuj obiekty:
canvas ( bo po tym pewnie rysujesz)
paint ( kolor)
i później coś takiego
canvas.drawCircle(parametry);
A nie możesz narysować 3 elementów z wypełnieniem i nałożyć je na siebie? A jeśli nie to narysować x kół, każde mniejsze od poprzedniego o 2px?
Rysowałem czymś takim:
Graphics g = this.getGraphics();
g.setColor(Color.RED);
g.drawOval(50,50,100,100);
A w ogóle wiesz czego używasz czy niekoniecznie?
Wiem co to canvas. Rysowanie wielu kół nie wchodzi w grę max 3-4. Najlepiej byłoby narysować 3 koła o podanej grubości, ale jak taką grubość ustawić?!
Jeśli wiesz że używasz canvs'a to czemu nie wpiszesz magicznego hasła w google drawOval fill? Wpisując to i klikając na pierwszy link masz całą dokumentację. Wtedy naciskasz ctrl + f i wpisujesz fill, a potem patrzysz gdzie jest to słowo użyte. Gdybyś tak zrobił zobaczyłbyś że jest metoda fillOval której wystarczy użyć. Test dla Ciebie. Wyszukaj jakie parametry przyjmuje, spróbuj jej użyć i napisz na forum jaki był tego rezultat.
Trochę brzydki kod ale za to łopatologicznie :-)
public class Circles extends JFrame {
public Circles() {
this.setSize(800, 880);
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void paintRedOval(Graphics graphics) {
graphics.setColor(Color.RED);
graphics.fillOval(200, 200, 400, 400);
}
public static void paintGreenOval (Graphics graphics) {
graphics.setColor(Color.GREEN);
graphics.fillOval(150, 150, 500, 500);
}
public static void paintYellowOval (Graphics graphics) {
graphics.setColor(Color.YELLOW);
graphics.fillOval(100, 100, 600, 600);
}
public void paint(Graphics graphics) {
paintYellowOval(graphics);
paintGreenOval(graphics);
paintRedOval(graphics);
}
public static void main(String[] args) {
Circles paintCircles = new Circles();
paintCircles.paint(null);
}
}