Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2019, 19:23   #1
JUMANJ
 
Регистрация: 16.09.2019
Сообщений: 8
По умолчанию Изменение разрешения окна

Приложение рисует самолет одним полигоном, препод хочет чтобы окно (предположим что точки по которым строится самолет выходят за границы 800-600) создавалось по размерам самолета. Он объяснял мне, даже рисовал на тетради как это реализовать, но я чет туплю и не понимаю. Вот что запомнил из его слов "Будем смотреть на окно в глобальном размере 1х1, нужно найти коэффициент на который нужно увеличить окно, бла бла бла...."
Код:
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.GeneralPath;
import java.awt.Graphics2D;
import javax.swing.JPanel;
 
public class Frame {
    
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        DrawPanel panel = new DrawPanel();
        frame.add(panel);
        
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(800, 600);
        frame.setVisible(true);
    }
}
public class Plane implements DrawableObject {
    private int xpoint[] = {530,465,465,200,200,465,465,315,365,490,
                       570,695,745,595,595,860,860,595,595};
    private int ypoint[] = {50,140,290,490,560,520,560,670,740,
                       675,675,740,670,560,520,560,490,290,140};
 
    @Override
    public void draw(Graphics2D g2d){
        Point2D start = new Point2D.Float(0, 0);
        Point2D end = new Point2D.Float(800, 800);
        float[] dist = {0.2f, 1.0f};
        Color[] colors = {Color.BLUE, Color.GREEN};
        LinearGradientPaint bluetogreen = new LinearGradientPaint(start, end, dist, colors);
        g2d.setPaint(bluetogreen);
        g2d.fillPolygon(xpoint,ypoint,19);
    }
}
public interface DrawableObject {
    void draw(Graphics2D g2d);
}
public class DrawPanel extends JPanel {
 
    @Override
    public void paint(Graphics gr) {
        Graphics2D g2d = (Graphics2D) gr;
        Plane plane = new Plane();
        plane.draw(g2d);
        Star star = new Star(230, 490);
        Star star2 = new Star(790, 490);
        star.draw(g2d);
        star2.draw(g2d);
        gr.setColor(Color.BLACK);
        gr.setFont(new Font("Calibri", Font.BOLD,70));
        gr.drawString("И-16",465,500);
 
    }
}
public class Star implements DrawableObject {
    private int x, y;
 
    public Star(int x, int y) {
        this.x = x;
        this.y = y;
    }
    @Override
    public void draw(Graphics2D g2d) {
        int xPoints[]= {18, 30, 0, 36, 6};
        int yPoints[]= {0, 36, 12, 12, 36};
        GeneralPath star = new GeneralPath();
 
        star.moveTo(xPoints[0]+ x, yPoints[0]+ y);
        for (int i = 1; i < xPoints.length; i++) {
            star.lineTo(xPoints[i]+ x, yPoints[i]+ y);
        }
        star.closePath();
 
        g2d.setColor(Color.RED);
        g2d.fill(star);
    }
}
Изображения
Тип файла: jpg pln.jpg (99.6 Кб, 66 просмотров)
JUMANJ вне форума Ответить с цитированием
Старый 16.10.2019, 14:23   #2
JUMANJ
 
Регистрация: 16.09.2019
Сообщений: 8
По умолчанию

Код:
public class Frame {

    public static int Max(int pnts[]) {
        int max = pnts[0];
        for (int i = 0; i < pnts.length; i++) {
           if(max < pnts[i])
               max = pnts[i];
        }
        return max;
    }

    public static int Min(int pnts[]) {
        int min = pnts[0];
        for (int i = 0; i < pnts.length; i++) {
            if(min > pnts[i])
                min = pnts[i];
        }
        return  min;
    }

    public static int[] ComputeOverallDims(int xpnts[], int ypnts[]) {
       int dims[] = new int[2];
       dims[0] = Max(xpnts) - Min(xpnts);
       dims[1] = Max(ypnts) - Min(ypnts);
       return dims;
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        DrawPanel panel = new DrawPanel();
        frame.add(panel);

        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        int d[] = new int[2];
        d = ComputeOverallDims(Plane.xpoint, Plane.ypoint);
        frame.setSize(d[0] + 400, d[1] + 130);
        frame.setVisible(true);
    }
}

public class Plane implements DrawableObject {
    public static int xpoint[] = {530,465,465,200,200,465,465,315,365,490,570,695,745,595,595,860,860,595,595};
    public static int ypoint[] = {50,140,290,490,560,520,560,670,740,675,675,740,670,560,520,560,490,290,140};

    @Override
    public void draw(Graphics2D g2d){
        Point2D start = new Point2D.Float(0, 0);
        Point2D end = new Point2D.Float(800, 800);
        float[] dist = {0.2f, 1.0f};
        Color[] colors = {Color.BLUE, Color.GREEN};
        LinearGradientPaint bluetogreen = new LinearGradientPaint(start, end, dist, colors);
        g2d.setPaint(bluetogreen);
        g2d.fillPolygon(xpoint,ypoint,19);
    }
}
JUMANJ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение разрешения изображения .jpg Nina+ Общие вопросы C/C++ 2 21.06.2012 22:28
Изменение разрешения экрана sanya_fl Общие вопросы .NET 1 13.09.2011 14:49
[C#] Изменение разрешения изображения JonMagon Помощь студентам 0 22.08.2011 15:30
Изменение разрешения Gapro Общие вопросы Delphi 4 10.11.2009 20:39
изменение разрешения Sanek777 Общие вопросы Delphi 1 11.09.2008 17:43