рисование прямоугольника - PullRequest
1 голос
/ 20 декабря 2010

Я пишу программу, которая принимает координаты от пользователя и рисует некоторые фигуры на экране со звездами (*)

например, Прямоугольник, т.е. прямоугольник = 100, 150, 50, 50 как x, y, ширина, высота. как я могу это сделать ??

Ответы [ 5 ]

1 голос
/ 20 декабря 2010

Что такое «рисование со звездами»?Если это текстовый режим с моноширинным шрифтом, вам нужно будет напечатать его в виде горизонтальных линий звездочек, рассчитав правильные длины.Для прямоугольников это легко, для треугольников чуть менее легко, пятиугольник - это просто комбинация прямоугольника и некоторых треугольников.См. алгоритм Брезенхэма для вдохновения.

Также обратите внимание, что разрешение в текстовом режиме довольно плохое;стандартное оконечное окно шириной всего в 80 символов, и вы вряд ли сможете иметь его намного шире, чем, скажем, 200–300 символов, поэтому правильное округление важно.

1 голос
/ 20 декабря 2010

Я думаю, что этот урок очень полезен для вас: http://download.oracle.com/javase/tutorial/2d/geometry/primitives.html

0 голосов
/ 21 декабря 2010

Если вы не обращаетесь к GUI, координата Y может быть количеством строк, которые вы должны «пропустить», а координата x напоминает количество пробелов, введенных в строке.

Таким образом, в основном, x = 2 и y = 3 означают, что вам придется спуститься на 3 строки и переместиться на 2 пробела вправо.

0 голосов
/ 21 декабря 2010

Ниже от Javadoc

x - новая координата x для верхний левый угол этого прямоугольника у - новая координата Y для верхнего левого угол этого прямоугольника

0 голосов
/ 20 декабря 2010

Если это только прямоугольники, то в метод рисования должно работать следующее:

int xIncrement = (int)g.getFont().getStringBounds("*", null).getWidth();  
int yIncrement = (int)g.getFont().getStringBounds("*", null).getHeight(); 
for(int i = y; i < y + height; i += xIncrement)  
    for(int j = x; j < x + width; j += yIncrement)
        g.drawString("*", j, i);  

Для треугольников и других фигур это немного сложнее, но вы можете вычислить градиенты линийразделяя точки, и, следовательно, получите начальный x для каждой линии.

Как правило, старайтесь избегать «рисования звездочками» ...

...