Всем привет, пишу курсовую на 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);
}