@pshevnin

Мог бы кто-нибудь помочь с java sving?

Всем привет, пишу курсовую на java swing. Суть курсовой в том, чтобы считать из pgm файла изображение, и вывести его в отдельном окне. Изображение должно быть масштабируемым, то есть автоматически увеличиваться в случае увеличения окна. (С этим проблем не возникло) Так же стрелками нужно указать на самый яркий и самый темный и самый светлый пиксель картинки (стрелки ни при каких обстоятельствах не должны вылазить за границы картинки) Это тоже сделано. Проблема возникла в последней части: к стрелкам нужно вывести подписи, которые так же не должны вылезать за пределы изображения. В моём случае почему то некорректно выводятся характеристики надписи, т.е. ширина и высота, и при масштабировании надпись уезжает не туда, куда должна. Код прикладываю, возможно кто-нибудь подскажет в чём ошибка. Заранее спасибо за ответ.
private void popisBodu (double x1, double y1, double x2, double y2, String nadpis, Graphics2D g2, double font, double scale) {
		
		FontMetrics fm = g2.getFontMetrics();
	
		
		g2.setColor(Color.BLACK);
		g2.setFont(new Font ("Calibri", Font.PLAIN, (int)font));
		
		double vyska = fm.getLineMetrics(nadpis, g2).getHeight();
		double delka = fm.stringWidth(nadpis);
		
		System.out.println(delka + ": delka");
		System.out.println(vyska + ": vyska");
		double sourPopisX = 0;
		double sourPopisY = 0;
		
		if(y1 == y2) {
			if(x1 > x2) {
				sourPopisY = y1;
				sourPopisX = x1 + 5;
			}
			else if(x1 < x2) {
				sourPopisY = y1;
				sourPopisX = x1 - (5 + delka);
			}
		}
		else if(y1 > y2) {
			if(x1 == x2) {
				sourPopisX = ((x1 - 30) - x_min) * scale ;
				sourPopisY = (((y1 ) - y_min) * scale) + vyska ;
			}
			else if(x1 > x2) {
				sourPopisX = x1 + 5;
				sourPopisY = y1;
			}
			else if(x1 < x2) {
				sourPopisY = y1;
				sourPopisX = x1 - (5 + delka * font);
			}
		}
		else if(y1 < y2) {
			
		}
		
		g2.drawString(nadpis, (int)sourPopisX, (int)sourPopisY);
		
	}
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы