IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Bouger image avec clavier souris + zoom avec molette


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 11
    Points
    11
    Par défaut Bouger image avec clavier souris + zoom avec molette
    Bonjour,

    Mon but est ici d'ouvrir une fenetre contenant une image de tres grande taille genre (2000 x 2000 et de 10 MO), de pouvoir la bouger pas drag and drop avec la souris, avec les fleches du clavier, et de pouvoir zoomer dessus à l'aide de la molette. Ce dernier point n'est pas encore pret, il n'y a qu'un curseur zomm a droite pour le moment.

    j'ai créer un code à partir de plusieurs autres, mais plusieurs problèmes sont apparus:
    impossible de lire l'image il me fait une erreur de memoire, il em faut lancer l'appli sous dos grace a la commande:
    java -Xms128m -Xmx512m Package3.MainFrameInternet
    afin d'allouer davantage de memoire.
    Q1: comment pouvoir lancer cela sous netbeans?

    on s'appercoit en la deplacant que l'image est coupée, on tombe donc tres vite sur des zones blanches au lieu d'afficher la partie de l'image qui etait initialement en dehors de la fenetre.
    Q2: comment y remedier?

    Q3:J'ai dû mal codé la partie clavier: au lieu de déplacer l'image, je zoom ! :-S

    Q4: quand j'arrive à une extremité de l'image droite ou gauche de l'écran je voudrais revenir de l'autre coté: comme ci on avait un bandeau de 360° dans lequel on peut tourner à l'infini, j'ai tenté mais sans succès. Et bloquer quand on arrive a la limite supérieur ou inférieur de l'image...
    Si quelqu'un peut m'aider...merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Insets;
    import java.awt.Panel;
    import java.awt.Rectangle;
    import java.awt.RenderingHints;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionAdapter;
    import java.awt.image.BufferedImage;
    import java.io.File;
     
    import javax.imageio.ImageIO;
    import javax.swing.GroupLayout;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JSlider;
    import javax.swing.border.Border;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
     
    public class MainFrameInternet extends JFrame {
     
        // public class Mainpanel extends JFrame {
     
        // Variables d'instance
        protected BufferedImage image;
        protected JSlider curseur = new JSlider(JSlider.VERTICAL, 1, 3, 1);
        protected Panel SimConfigurationPane;
        protected Panel SimPanonnierPane;
        protected Panel SimNexterPane;
        protected Panel SimPostePane;
        protected MapPane EeVeillePane;
        protected Panel EeHbPane;
        protected Panel EeGdPane;
        protected Panel EeArmPane;
        protected Panel EePanoPane;
     
        // constructor by default
        public MainFrameInternet() throws Exception {
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setBounds(0, 0, 1280, 1024);
     
            // read pic
            image = ImageIO.read(new File("Images/tree.jpg"));
            // Add inside
            EeVeillePane = new MapPane(image);
            // mapPane.setBorder(new TitledBorder("Map"));
            curseur.setMajorTickSpacing(1);
            curseur.setMinorTickSpacing(1);
            curseur.setPaintLabels(true);
            curseur.setPaintTicks(true);
            curseur.setSnapToTicks(true);
            setLayout(new BorderLayout());
            add(EeVeillePane, BorderLayout.CENTER);
            add(curseur, BorderLayout.EAST);
            // événement curseur
            curseur.addChangeListener(new ChangeListener() {
     
                public void stateChanged(ChangeEvent e) {
                    JSlider curseur = (JSlider) e.getSource();
                    int scale = curseur.getValue();
                    EeVeillePane.setScale(scale);
                    repaint();
                    MainFrameInternet.this.validate();
                }
            });
     
        }
     
        /*
         * fonction main qui se contente de créer une new map public static void
         * main(String[] args) {
         *
         * }
         */
     
        // classe mappane pour opérations sur panel contenant la carte
        private static class MapPane extends JPanel {
     
            private BufferedImage image;
            private int scale = 1;
            private Rectangle imageBounds;
            private int xClick = 0;
            private int yClick = 0;
     
     
            // accesseur image de rectangle
            Rectangle getImageBounds() {
                return imageBounds;
            }
     
            // constructeur avec BufferedImage
            public MapPane(BufferedImage image) {
                super();
                setImage(image);
                imageBounds = new Rectangle();
     
                addMouseMotionListener(new MouseMotionAdapter() {
     
                    public void mouseDragged(MouseEvent e) {
                        if (getImageBounds().contains(e.getX(), e.getY())) {
                            MapPane cadre = (MapPane) e.getSource();
                            cadre.setLocation(cadre.getX() + e.getX() - xClick, cadre.getY() + e.getY() - yClick);
                            repaint();
                        }
                    }
                });
     
                addMouseListener(new MouseAdapter() {
     
                    @Override
                    public void mousePressed(MouseEvent e) {
                        xClick = e.getX();
                        yClick = e.getY();
                    }
                });
     
                addKeyListener(new KeyAdapter() {
     
                    public void keyTyped(KeyEvent evt) {
                        int key = evt.getKeyCode();
                        int dx = 10;
                        int dy = 5;
                        int x=0;
                        int y=0;
                        switch (key) {
                            case KeyEvent.VK_UP:
                                y -= dy;
                                break;
                            case KeyEvent.VK_DOWN:
                                y += dy;
                                break;
                            case KeyEvent.VK_RIGHT:
                                x += dx;
                                break;
                            case KeyEvent.VK_LEFT:
                                x -= dx;
                            default:
                                break;
                        }
                        MapPane cadre = (MapPane) evt.getSource();
                        cadre.setLocation(cadre.getX()  - x, cadre.getY()  - y);
                        repaint();
                    }
                });
     
            }
     
            // Recalculer correctement la taille du panel.
            private void recalculateAndResetSize() {
                int width = 0;
                int height = 0;
                // Tenir compte de la bordure optionnelle du panel.
                Insets insets = getInsets();
                width += insets.left + insets.right;
                height += insets.top + insets.bottom;
                // Tenir compte de la taille de l'image.
                if (image != null) {
                    width += image.getWidth() * scale;
                    height += image.getHeight() * scale;
                }
                Dimension size = new Dimension(width, height);
                setSize(size);
                setMinimumSize(size);
                setPreferredSize(size);
            }
     
            // initialise image
            public void setImage(BufferedImage image) {
                this.image = image;
                recalculateAndResetSize();
                repaint();
            }
     
            // accesseur image
            public BufferedImage getImage() {
                return image;
            }
     
            // définit la valeur de l'echelle pour le zoom
            public void setScale(int value) {
                this.scale = value;
                recalculateAndResetSize();
                repaint();
            }
     
            // accésseur échelle
            public int getScale() {
                return scale;
            }
     
            // recalcul des border
            @Override
            public void setBorder(Border border) {
                super.setBorder(border);
                recalculateAndResetSize();
            }
     
            // affichage image avec option de rendering pour que malgré le zoom,
            // l'image paraisse au mieux
            public void paintComponent(Graphics graphics) {
                super.paintComponent(graphics);
                Graphics2D g2d = (Graphics2D) graphics;
                if (image != null) {
                    Insets insets = getInsets();
                    Dimension size = getSize();
                    int panelWidth = size.width - (insets.left + insets.right);
                    int panelHeight = size.height - (insets.top + insets.bottom);
     
                    int scaledImageWidth = image.getWidth() * scale;
                    int scaledImageHeight = image.getHeight() * scale;
     
                    imageBounds.width = image.getWidth() * scale;
                    imageBounds.height = image.getHeight() * scale;
                    imageBounds.x = (panelWidth - scaledImageWidth) / 2;
                    imageBounds.y = (panelHeight - scaledImageHeight) / 2;
                    g2d.translate(insets.left, insets.top);
                    g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
                    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
                    g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
                    g2d.drawImage(image, imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height, null);
     
                    // Retour a l'origine du repere.
                    g2d.translate(-insets.left, -insets.top);
                }
            }
        }
     
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {
     
            setName("Form"); // NOI18N
     
            GroupLayout layout = new GroupLayout(this);
            this.setLayout(layout);
            layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 400, Short.MAX_VALUE));
            layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 300, Short.MAX_VALUE));
        }// </editor-fold>
     
        public static void main(String[] args) throws Exception {
            (new MainFrameInternet()).setVisible(true);
        }
     
        // Variables declaration - do not modify
        // End of variables declaration
    }

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 11
    Points
    11
    Par défaut pour la question 1 j'ai trouvé
    http://netbeans.developpez.com/faq/?...eloppementJ2SE

    j'ai modifié mon code pour pouvoir zoomer avec la molette de la souris, mais cela fait zoomer le coin supérieur gauche...:
    Q5:comment faire pour centrer le zoom?

    Q6: j'ai créé divers panel qui doivent rester fixes et visibles en haut de la frame, mais ils n'apparaissent pas...?? :-(

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.Rectangle;
    import java.awt.RenderingHints;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionAdapter;
    import java.awt.event.MouseWheelEvent;
    import java.awt.image.BufferedImage;
    import java.io.File;
     
    import javax.imageio.ImageIO;
    import javax.swing.GroupLayout;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JSlider;
    import javax.swing.border.Border;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
     
    public class MainFrameInternet extends JFrame {
     
        // public class Mainpanel extends JFrame {
     
        // Variables d'instance
        protected BufferedImage image;
        static protected MapPane EeVeillePane;
        protected JSlider curseur = new JSlider(JSlider.VERTICAL, 1, 3, 1);
     
        protected JPanel SimConfigurationPane;
        protected JPanel SimPanonnierPane;
        protected JPanel SimNextPane;
        protected JPanel SimPostePane;
        protected JPanel EeHbPane;
        protected JPanel EeGdPane;
        protected JPanel EeArmPane;
        protected JPanel EePanoPane;
     
        protected JLabel SimNextLabel;
     
     
        // constructor by default
        public MainFrameInternet() throws Exception {
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setBounds(0, 0, 1280, 1024);
     
            // read pic
            image = ImageIO.read(new File("Images/Image.jpg"));
            // Add inside
            EeVeillePane = new MapPane(image);
            // mapPane.setBorder(new TitledBorder("Map"));
            curseur.setMajorTickSpacing(1);
            curseur.setMinorTickSpacing(1);
            curseur.setPaintLabels(true);
            curseur.setPaintTicks(true);
            curseur.setSnapToTicks(true);
     
            GridBagLayout layoutOfMainFrame = new GridBagLayout();
            GridBagConstraints constraintsOfMainFrame = new GridBagConstraints();
            getContentPane().setLayout(layoutOfMainFrame);
     
            constraintsOfMainFrame.gridx = 0;
            constraintsOfMainFrame.gridy = 1;
            constraintsOfMainFrame.gridheight = 0;
            constraintsOfMainFrame.gridwidth = 0;
            constraintsOfMainFrame.weightx = 0;
            constraintsOfMainFrame.weighty = 0;
            constraintsOfMainFrame.anchor = GridBagConstraints.CENTER;
            constraintsOfMainFrame.insets = new Insets(0,0,0,0);
            constraintsOfMainFrame.fill = GridBagConstraints.BOTH;
            constraintsOfMainFrame.ipadx = 0;
            constraintsOfMainFrame.ipady = 0;
            getContentPane().add(EeVeillePane, constraintsOfMainFrame);
     
            constraintsOfMainFrame.gridx = 1;
            constraintsOfMainFrame.gridy = 1;
            constraintsOfMainFrame.gridheight = 0;
            constraintsOfMainFrame.gridwidth = 0;
            constraintsOfMainFrame.weightx = 0;
            constraintsOfMainFrame.weighty = 0;
            constraintsOfMainFrame.anchor = GridBagConstraints.CENTER;
            constraintsOfMainFrame.insets = new Insets(0,0,0,0);
            constraintsOfMainFrame.fill = GridBagConstraints.BOTH;
            constraintsOfMainFrame.ipadx = 0;
            constraintsOfMainFrame.ipady = 0;
            getContentPane().add(curseur, constraintsOfMainFrame);
     
            constraintsOfMainFrame.gridx = 1;
            constraintsOfMainFrame.gridy = 0;
            constraintsOfMainFrame.gridheight = 0;
            constraintsOfMainFrame.gridwidth = 0;
            constraintsOfMainFrame.weightx = 0;
            constraintsOfMainFrame.weighty = 0;
            constraintsOfMainFrame.anchor = GridBagConstraints.CENTER;
            constraintsOfMainFrame.insets = new Insets(0,0,0,0);
            constraintsOfMainFrame.fill = GridBagConstraints.BOTH;
            constraintsOfMainFrame.ipadx = 0;
            constraintsOfMainFrame.ipady = 0;
            SimNextPane = new JPanel();
            SimNextLabel = new JLabel("Images/MonLogo.jpg");
            SimNextPane.add(SimNextLabel);  
            getContentPane().add(SimNextPane, constraintsOfMainFrame);
     
            //cursor event
            curseur.addChangeListener(new ChangeListener() {
     
                public void stateChanged(ChangeEvent e) {
                    JSlider curseur = (JSlider) e.getSource();
                    int scale = curseur.getValue();
                    EeVeillePane.setScale(scale);
                    repaint();
                    MainFrameInternet.this.validate();
                }
            });
     
        }
     
        /*
         * fonction main qui se contente de créer une new map public static void
         * main(String[] args) {
         *
         * }
         */
     
        // classe mappane pour opérations sur panel contenant la carte
        private static class MapPane extends JPanel {
     
            private BufferedImage image;
            private int scale = 1;
            private Rectangle imageBounds;
            private int xClick = 0;
            private int yClick = 0;
            public int calculWheel = 1;
     
     
            // accesseur image de rectangle
            Rectangle getImageBounds() {
                return imageBounds;
            }
     
            // constructeur avec BufferedImage
            public MapPane(BufferedImage image) {
                super();
                setImage(image);
                imageBounds = new Rectangle();
     
                addMouseMotionListener(new MouseMotionAdapter() {
     
                    public void mouseDragged(MouseEvent e) {
                        if (getImageBounds().contains(e.getX(), e.getY())) {
                            MapPane cadre = (MapPane) e.getSource();
                            cadre.setLocation(cadre.getX() + e.getX() - xClick, cadre.getY() + e.getY() - yClick);
                            repaint();
                        }
                    }
                });
     
                addMouseListener(new MouseAdapter() {
     
                    @Override
                    public void mousePressed(MouseEvent e) {
                        xClick = e.getX();
                        yClick = e.getY();
                    }
                });
     
                addMouseWheelListener(new MouseAdapter() {
     
                    public void mouseWheelMoved(MouseWheelEvent e) {
                        int wheelRotation = e.getWheelRotation();
                        if (wheelRotation > 0) {
                            calculWheel = calculWheel - (wheelRotation/3);
                            if (calculWheel <=0)
                                calculWheel = 1;
                            EeVeillePane.setScale(calculWheel);
                        }
                        else if (wheelRotation < 0) {
                            calculWheel = calculWheel - (wheelRotation/3);
                            if (calculWheel >= 5)
                                calculWheel = 5;
                            EeVeillePane.setScale(calculWheel);
                        }
                        repaint();
                        //EeVeillePane.validate();
                    }
                });
     
                addKeyListener(new KeyAdapter() {
     
                    public void keyTyped(KeyEvent evt) {
                        int key = evt.getKeyCode();
                        int dx = 10;
                        int dy = 5;
                        int x = 0;
                        int y = 0;
                        switch (key) {
                            case KeyEvent.VK_UP:
                                yClick -= dy;
                                break;
                            case KeyEvent.VK_DOWN:
                                yClick += dy;
                                break;
                            case KeyEvent.VK_RIGHT:
                                xClick += dx;
                                break;
                            case KeyEvent.VK_LEFT:
                                xClick -= dx;
                            default:
                                break;
                        }
                        MapPane cadre = (MapPane) evt.getSource();
                        cadre.setLocation(cadre.getX() - xClick, cadre.getY() - yClick);
                        repaint();
                    }
                });
     
            }
     
            // Recalculer correctement la taille du panel.
            private void recalculateAndResetSize() {
                int width = 0;
                int height = 0;
                // Tenir compte de la bordure optionnelle du panel.
                Insets insets = getInsets();
                width += insets.left + insets.right;
                height += insets.top + insets.bottom;
                // Tenir compte de la taille de l'image.
                if (image != null) {
                    width += image.getWidth() * scale;
                    height += image.getHeight() * scale;
                }
                Dimension size = new Dimension(width, height);
                setSize(size);
                setMinimumSize(size);
                setPreferredSize(size);
            }
     
            // initialise image
            public void setImage(BufferedImage image) {
                this.image = image;
                recalculateAndResetSize();
                repaint();
            }
     
            // accesseur image
            public BufferedImage getImage() {
                return image;
            }
     
            // définit la valeur de l'echelle pour le zoom
            public void setScale(int value) {
                this.scale = value;
                recalculateAndResetSize();
                repaint();
            }
     
            // accésseur échelle
            public int getScale() {
                return scale;
            }
     
            // recalcul des border
            @Override
            public void setBorder(Border border) {
                super.setBorder(border);
                recalculateAndResetSize();
            }
     
            // affichage image avec option de rendering pour que malgré le zoom,
            // l'image paraisse au mieux
            public void paintComponent(Graphics graphics) {
                super.paintComponent(graphics);
                Graphics2D g2d = (Graphics2D) graphics;
                if (image != null) {
                    Insets insets = getInsets();
                    Dimension size = getSize();
                    int panelWidth = size.width - (insets.left + insets.right);
                    int panelHeight = size.height - (insets.top + insets.bottom);
     
                    int scaledImageWidth = image.getWidth() * scale;
                    int scaledImageHeight = image.getHeight() * scale;
     
                    imageBounds.width = image.getWidth() * scale;
                    imageBounds.height = image.getHeight() * scale;
                    imageBounds.x = (panelWidth - scaledImageWidth) / 2;
                    imageBounds.y = (panelHeight - scaledImageHeight) / 2;
                    g2d.translate(insets.left, insets.top);
                    g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
                    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
                    g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
                    g2d.drawImage(image, imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height, null);
     
                    // Retour a l'origine du repere.
                    g2d.translate(-insets.left, -insets.top);
                }
            }
        }
     
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {
     
            setName("Form"); // NOI18N
     
            GroupLayout layout = new GroupLayout(this);
            this.setLayout(layout);
            layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 400, Short.MAX_VALUE));
            layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 300, Short.MAX_VALUE));
        }// </editor-fold>
     
        public static void main(String[] args) throws Exception {
            (new MainFrameInternet()).setVisible(true);
        }
    }

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 860
    Points : 22 900
    Points
    22 900
    Billets dans le blog
    51
    Par défaut
    R1: Dans les proprietes d'un projet NetBeans (bouton de droite sur le noeud du projet dans la vue arborescente) tu peux specifier la classe executable ainsi que les options de la VM a utiliser.

    R2: verifie ton code d'affichage... ainsi que la zone de clip (si effectivement l'image et son decallage sont corrects, mais qu'elle ne s'affiche pas en entier, c'est peut-etre lie a la zone de clip du Graphics qui la coupe).

    Voir remarque dans R6 sur ta methode de faire.

    R3: verifie ton code de gestion du clavier...

    R4: si tu detectes que l'image est affichee sur un de ses bords droit ou gauche, ben tu reaffiches l'image juste a cote une seconde fois. Il te faut donc faire un calcul apres un deplacement pour verifier si tu dois faire un affichage supplementaire sur la gauche ou la droite de l'image et le decalage approprie pour afficher le bon bout.

    Une methode alternative mais peu optimisee consiste a utiliser un TexturePaint qui lui fait l'affichage en boucle de maniere automatique. Ca fait moins de calculs par contre, niveau optimisation c'est pas glop.

    Concernant le deplacement haut et bas, tu fais le calcul de deplacement de l'image et si ca sort tu reste a deplacement min ou max... bref tout est dans la verification des calculs de deplacement, c'est independant de l'affichage.

    Voir remarque dans R6 sur ta methode de faire.

    R5: l'origine par defaut du repere est dans le coin superieur gauche. Pour centrer il faut d'abord faire une translation de repere au centre de l'image (en general). Ici tu fait ton zoom avec un drawImage (un g2d.scale aurait aussi pu faire l'affaire) mais le repere reste bien le meme... donc soit tu fait un translate au point approprie avant d'appeler drawImage soit tu appelle sa variate qui prend un x et un y et tu t'arrange pour utiliser les bonnes valeurs.

    Voir remarque dans R6 sur ta methode de faire.

    R6: aucune idee, je ne peux pas trop tester le code la.

    Enfin si une idee : apparement plutot que d'effectuer des calculs de decallage de ton image pour l'afficher a des coordonnees particulieres dans la methode de rendu de ton composant, en fait il semble que ce soit le panel que tu deplaces dans ta frame. Ce n'est probablement pas la methode appropriee et il est possible qu'il cache les autres panels par la meme.

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 11
    Points
    11
    Par défaut R1 OK
    Q1: j'ai passé les arguments a la MV et ca marche maintenant !

    Q2: je ne sais as comment, j'ai recompilé, relancé, et le problème n'apparait plus....j'ai pas tout compris...on va mettre ca sur le compte de la fatigue...

    Q3: en utilisant le debugger je m'appercois qu je ne rentre jamais dans la methode gérant le clavier...je regarde ca de plus pret...

    au fait pourquoi dis tu que tu ne peux pas lancer le code?

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 860
    Points : 22 900
    Points
    22 900
    Billets dans le blog
    51
    Par défaut
    Pas le temps tout simplement

Discussions similaires

  1. Agradir une image quand on passe dessus avec la souris
    Par The Molo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/10/2007, 13h51
  2. web cam clavier souris LOGITECH avec VISTA
    Par Jean Gérard dans le forum Windows Vista
    Réponses: 5
    Dernier message: 14/02/2007, 21h33
  3. script pour déplacer image avec souris, pb avec Netscape
    Par jejerome dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/11/2006, 17h59
  4. Faire glisser une image trop grande avec la souris
    Par avogadro dans le forum Général JavaScript
    Réponses: 25
    Dernier message: 28/07/2006, 16h50
  5. probleme avec le zoom avec une modification d'image
    Par yoyo59650 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/02/2006, 09h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo