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

avec Java Discussion :

Création d'ovales aléatoires


Sujet :

avec Java

  1. #61
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    Bonjour . On est la pour s’entraider. bref!!!
    par exemple quand tu dessine un objet en (couleur RGB 3 canaux) chaque canal est sur 8 bits rouge et vert et bleu. je veux codé sur (2 correspond à 16 bits) ou 4 qui correspond à 32 bits) canaux

  2. #62
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    2 canaux gris.
    Le premier qui indique un niveau de gris, et le deuxième qui indique... Un autre niveau de gris ?

    Il n'existe pas de modèle de couleur en Java... Ni autre part d'ailleurs, qui possède 2 canaux. Ni qui possède plus d'un canal représentant la même chose.

    Rien ne t'empêche de travailler sur des matrices de bytes pour émuler ça, et de programmer le dessin d'ovales sur ce modèle.
    Mais si c'est vraiment ce que tu veux faire, et que tu veux de l'aide, il faut au minimum nous dire la différence entre le premier canal de gris et le second canal de gris.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #63
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    oui c ca que je veux, normalement on arrive a avoir un niveau de gris sur 8 bits ben moi je veux que ca soit sur 16 bits ou 32 bits???

  4. #64
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Bon. Donc c'est vraiment un canal de gris, et sur 16 bits au lieu de 8. (Les 32 bits je confirme que je trouve ça nulle part.)

    J'aurais pas cru que ça existe, mais ça existe.
    Les écrans informatiques ne peuvent pas afficher ça par contre, donc ça ne sert à rien d'afficher directement sur l'écran. Il faut créer une image en mémoire et dessiner là-dessus.

    Voici comment créer une image en niveau de gris exprimés sur 16 bits :

    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
    int width = 800;
    int height = 800;
    // Création de l'image, noire au début
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_USHORT_GRAY);
    // création d'un Graphics2D qui dessine sur cette image
    Graphics2D g = image.createGraphics();
    // sélection d'un niveau de gris, disons 1/4 de blanc et 3/4 de noir
    float grayLevel = 0.25f;
    // Transformation de ce niveau de gris en objet Color, utilisable pour le dessin
    Color color = new Color(ColorSpace.getInstance(ColorSpace.CS_GRAY), new float[] {grayLevel}, 1f);
    // Utiliser cette couleur pour le dessin
    g.setColor(color);
     
    // Dessiner un ovale comme d'hab
    g.drawOval(5, 5, 790, 790);
    // enregistrer l'image dessinée comme d'hab
    File file = new File("imageGrise.png");
    ImageIO.write(image, "PNG", file);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #65
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Extrêmement bonne réponse sur ce coup la j'avoue.
    Je n'avais même jamais fait attention à ce TYPE_USHORT_GRAY moi même.

    Par contre le support des images en 32 bits (même plus) couleurs manque un peu en java je trouve (exr, hdr, etc).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #66
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 300
    Par défaut
    Merci thelvin pour tes recherches.

  7. #67
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    Merci beaucoup
    j ai deux classes pour faire de tel image avec la méthode de thelvin .
    Ce qui j ai marqué en rouge me pose quelque problème car je n'arrive pas a a avoir mes dessins et ensuite a les enregistrer??

    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
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.color.ColorSpace;
    import java.awt.geom.AffineTransform;
    import java.awt.image.AffineTransformOp;
    import java.awt.image.BufferedImage;
    import java.awt.image.ConvolveOp;
    import java.awt.image.Kernel;
    import java.awt.image.RescaleOp;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
    
    public class PanDessin1 extends JPanel {
    	
    	BufferedImage monImage = null;
    
    	public PanDessin1() {
    		super();
    
    	}
    
    	protected void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
    		if(monImage != null)
    			g.drawImage(monImage, 0, 0, null);
    	}
    
    	protected void ajouterImage(File fichierImage)
    	{   // desiiner une image à l'ecran	
    		try {
    			monImage = ImageIO.read(fichierImage);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		repaint(); 
    	}
    	
    	protected void creerImage(){
            int width = 800;
    	    int height = 800;
    		// Création de l'image, noire au début
    		BufferedImage image= new BufferedImage(width,height, BufferedImage.TYPE_USHORT_GRAY);
    		// création d'un Graphics2D qui dessine sur cette image
    		Graphics2D g = image.createGraphics();
    		// sélection d'un niveau de gris, disons 1/4 de blanc et 3/4 de noir
    			float grayLevel = 0.25f;
    			// Transformation de ce niveau de gris en objet Color, utilisable pour le dessin
    			Color color = new Color(ColorSpace.getInstance(ColorSpace.CS_GRAY), new float[] {grayLevel}, 1f);
    			
    			// Utiliser cette couleur pour le dessin
    			g.setColor(color);
    			 
    			// Dessiner un ovale comme d'hab
    			g.drawOval(5, 5, 590, 590);	
    			
    			
    			repaint();
    		
    		}
    	protected BufferedImage getImagePanneau()
    	{      // récupérer une image du panneau
    		int width  = this.getWidth();
    		int height = this.getHeight();
    		BufferedImage image = new BufferedImage(width, height,  BufferedImage.TYPE_INT_RGB);
    		Graphics2D g = image.createGraphics();
    
    		this.paintAll(g);
    		g.dispose();
    		return image;
    	}
    	
    	protected void enregistrerImage(File fichierImage)
    	{
    		String format ="JPG";
    		BufferedImage image = getImagePanneau();
    		try {
    			ImageIO.write(image, format, fichierImage);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    
    	}
    }
    Deuxieme classe

    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
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.WindowConstants;
    public class Cadre1 extends JFrame implements ActionListener{
    	
    	private final JMenuBar menuBar = new JMenuBar();
    	private final JMenu fichierMenu = new JMenu();
    	private final JMenuItem ouvrirMenu = new JMenuItem();
    	private final JMenu filtreMenu = new JMenu();
    	private final PanDessin1 panneau = new PanDessin1();
    	private final JMenuItem enregistrerMenu = new JMenuItem();
    	private final JMenu creerImg = new JMenu();
    	private final JMenuItem _8BitsMenu = new JMenuItem();
    	private final JMenuItem _16BitsMenu = new JMenuItem();
    	
    	public Cadre1() {
    		super();
    		setBounds(100, 100, 500, 375);
    		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    		try {
    			creerMenu();
    		} catch (Throwable e) {
    			e.printStackTrace();
    		}
    		//
    	}
    	
    	private void creerMenu() throws Exception {
    
    		// construction du menu
    		setJMenuBar(menuBar);	
    		menuBar.add(fichierMenu);
    		fichierMenu.setText("Fichier");
    		fichierMenu.add(ouvrirMenu);
    		ouvrirMenu.addActionListener((ActionListener)this);
    		ouvrirMenu.setText("ouvrir");
    
    		fichierMenu.add(enregistrerMenu);
    		enregistrerMenu.addActionListener((ActionListener)this);
    		enregistrerMenu.setText("enregistrer");
    		
    		menuBar.add(creerImg);
    		creerImg.setText("créer");
    
    		creerImg.add(_8BitsMenu);
    		_8BitsMenu.addActionListener((ActionListener)this);
    		_8BitsMenu.setText("img 8 bits");
    
    		creerImg.add(_16BitsMenu);
    		_16BitsMenu.addActionListener((ActionListener)this);
    		_16BitsMenu.setText("img 16 bits");
    		
    		
    		// ajouter le panneau de dessin
    		getContentPane().add(panneau);
    	}
    
    	public void actionPerformed(ActionEvent cliqueMenu) {
    		if (cliqueMenu.getSource().equals(ouvrirMenu))
    		{
    			JFileChooser fileOuvrirImage = new JFileChooser();
    			if (fileOuvrirImage.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
    				panneau.ajouterImage(new File(fileOuvrirImage.getSelectedFile()
    						.getAbsolutePath()));
    			}
    		} else if (cliqueMenu.getSource().equals(enregistrerMenu)) {
    			JFileChooser fileEnregistrerImage = new JFileChooser();
    			if (fileEnregistrerImage.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
    				File fichierEnregistrement = new File(fileEnregistrerImage.getSelectedFile().getAbsolutePath()+ ".JPG");
    				panneau.enregistrerImage(fichierEnregistrement);
    			}
    			
    		}  else if (cliqueMenu.getSource().equals(_8BitsMenu)) {
    			panneau.creerImage();}
    			
    	}
    	public static void main(String args[]) 
    	{
    		try {
    			Cadre1 frame = new Cadre1();
    			frame.setVisible(true);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }

  8. #68
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Pour la procédure creerImage() car il n'y a que ca qui est intéressant :

    1) C'est normal que ca n'enregistre rien, tu as commenté les 2 lignes pour écrire dans le fichier.
    2) Chez moi en dé commentant les 2 lignes ca marche très bien. Il m'écrit bien un PNG avec un joli cercle gris. (en 16 bit de surcroit comme demandé).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #69
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    ok tu peux me donner ton code qui marche pour voir ou j'ai pu me trompé
    merci

  10. #70
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    C'est toi qui a posté le code =)

    Moi je n'ai qu'extrait la fonction, décommenté les 2 lignes susmentionnées puis executé la fonction.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #71
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    je ne vois pas j ai toutes essayé sans succès

  12. #72
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Il faut dé-commentez ces 2 lignes, sans quoi tu n'auras pas ton fichier PNG écrit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //			File file = new File("imageGrise.png");
    //			ImageIO.write(image, "PNG", file);
    Mais ca ne concerne que cette fonction qui crée l'image et l'écrit dans un ficheir. Je n'ai pas testé le reste...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #73
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    je l ai fait mais rien

  14. #74
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Bon et bien je vais te décrire la façon dont tu faire fonctionner TON logiciel tel qu'il est écrit la: (En décommentant bien entendu les 2 lignes)

    1) Créer->8 bit. (Cela crée un fichier imageGris.png que tu peux vérifier avec un logiciel de dessin ou autres).
    2) Fichier->ouvrir puis choisir ce fichier et la magie il apparait dans ton interface.

    Je pense que maintenant tu devrais être capable de poursuivre seul en corrigeant le code si le comportement ne te conviens pas.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #75
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Remplace new File("imageGrise.png"); par new File("c:/temp/imageGrise.png");.
    L'image sera enregistrée dans le fichier c:/temp/imageGrise.png
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #76
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    si vous pouviez regarder sur mes deux classes pourquoi ca marche pas?

  17. #77
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Non. "ca marche pas" n'est pas une question recevable.
    Dis ce que tu aimerais obtenir, ce que tu obtiens vraiment, et pourquoi le code que tu as devrait faire en sorte de créer ce que tu voulais au lieu de ce qu'il fait vraiment.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  18. #78
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    j'ai créée deux classes PanDessin et Cadre j ai intégré la méthode creerImage pour que je puisse créer l image et ensuite l 'enregistrer avec mon inteface mais je vois que ma méthode crée pas d'image, c'est pas par ce que la méthode ne fonctionne pas, mais elle interagit pas avec mon interface et le reste de mon code.

  19. #79
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    Bonjour,
    Dites moi comment on fait pour intégrer les classes qui dessiner les cercles aleatoirement
    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
    public class DemoCercleRandom extends JFrame implements ActionListener, ChangeListener{
     
     
    	ArrayList<Ellipse2D.Float> listCercles = new ArrayList<Ellipse2D.Float>();
    	int nombreDeCercles = 20;
    	int rayon= 30;
    	JTextField textNombreDeCercles = new JTextField(2);
    	JTextField textRayonDesCercles = new JTextField(2);
    	JButton bouton = new JButton("Rafraichir");
    	CercleRandom c;
    	JSlider slider = new JSlider(0,255,0);
     
     
     
    	public static void main(String[] args) throws Exception {
    		DemoCercleRandom D = new DemoCercleRandom();
    	}
     
     
    	public DemoCercleRandom() {	
     
     
    		//setSize(1024,1024);
    		setTitle ("ICS TESTING");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		JPanel panelNord = new JPanel();
    		panelNord.add(new JLabel("Nombre cercles"));
    		panelNord.add(textNombreDeCercles);
    		panelNord.add(new JLabel("Rayon cercles"));
    		panelNord.add(textRayonDesCercles);
    		panelNord.add(bouton);
    		panelNord.add(slider);
    		slider.addChangeListener(this);
    		bouton.addActionListener(this);
    		add(panelNord, BorderLayout.NORTH);
    		textNombreDeCercles.setText(""+20);
    		textRayonDesCercles.setText(""+30);
    		try {
    		c = new CercleRandom();
    		add(c,BorderLayout.CENTER);
    		}
    		catch(Exception e) {
    		}
    		pack();
    		setVisible(true);
    	}
     
     
    	public void actionPerformed(ActionEvent e) {
    		nombreDeCercles = Integer.parseInt(textNombreDeCercles.getText());
    		rayon = Integer.parseInt(textRayonDesCercles.getText());
    		listCercles.clear();
    		c.setVisible(false);
    		this.remove(c);
    		c = new CercleRandom();
    		add(c,BorderLayout.CENTER);
    		c.setVisible(true);
    	}
     
    	public void stateChanged(ChangeEvent e) {
    		repaint();
    	}
     
    	class CercleRandom extends JPanel {
     
     
    		public CercleRandom() {
    			double x,y;
    			boolean bool = false;
    			setPreferredSize(new Dimension(600,600));
    			x = Math.random()*(600-2*rayon);
    			y = Math.random()*(600-2*rayon);
    			Ellipse2D.Float temp;
    			boolean ok = false;
    			listCercles.add(new Ellipse2D.Float((float)x,(float)y,2*rayon,2*rayon));
    			int attempt = 0;
    			while ( listCercles.size()<nombreDeCercles && !bool) {
    				x = Math.random()*(600-2*rayon);
    				y = Math.random()*(600-2*rayon);
    				temp = new Ellipse2D.Float((float)x,(float)y,2*rayon,2*rayon);
    				for (int j=0; j< listCercles.size();j++) {
    					if (!temp.intersects(listCercles.get(j).getBounds2D())) {
    						ok = true;
    					}
    					else {
    						ok = false;
    						break;	
    					}
    				}
    				if (ok)
    					listCercles.add(temp);
    				if (attempt++>=10000) {
    					JOptionPane.showMessageDialog(this,"Trop de tentatives sans trouver de solutions, changez les parametres.");
    					bool = true;
    				}
     
    			}
    		}
     
    		public void paintComponent(Graphics g) {
    			Graphics2D g2 = (Graphics2D) g.create();
    			g2.setColor(Color.black);
    			g2.fillRect(0,0, 600, 600);
     
    			g2.setColor(new Color(slider.getValue(),slider.getValue(), slider.getValue()));
    			for (int i=0; i < nombreDeCercles;i++) {
    				g2.fill(listCercles.get(i));
     
    			}
    		}
    	}
     
    }
    dans ca
    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
    protected void creerImage(){
    		//System.out.println("ok");
    		int width =600;
    		int height =600;
    		// Création de l'image, noire au début
    		BufferedImage imageCreer = new BufferedImage(width, height, BufferedImage.TYPE_USHORT_GRAY);
    		// création d'un Graphics2D qui dessine sur cette image
    			Graphics2D g = imageCreer.createGraphics();
    			//surfaceImg.drawImage(monImage, null, null);
    		     monImage= imageCreer;
    		// création d'un Graphics2D qui dessine sur cette image
     
     
    		// sélection d'un niveau de gris, disons 1/4 de blanc et 3/4 de noir
    		    float grayLevel = 1f;
    			// Transformation de ce niveau de gris en objet Color, utilisable pour le dessin
    			Color color = new Color(ColorSpace.getInstance(ColorSpace.CS_GRAY), new float[] {grayLevel}, 1f);
    			// Utiliser cette couleur pour le dessin
    			g.setColor(color);
     
    			// Dessiner un ovale comme d'hab
    			g.fillOval(15, 15, 290, 290);	
     
     
    			// enregistrer l'image dessinée comme d'hab
    			//File file = new File("image1.jpg");
    			//ImageIO.write(monImage, "PNG", file);
    			//repaint();
     
    			repaint();
    		}
    merci

  20. #80
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Une chose que je peux te dire c'est qu'il ne faut pas faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics2D g2 = (Graphics2D) g.create();
    mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics2D g2 = (Graphics2D) g;
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Débutant] Création de rectangle aléatoire
    Par Korithov dans le forum MATLAB
    Réponses: 0
    Dernier message: 28/04/2015, 16h51
  2. Création liste déroulante aléatoire + création de feuille
    Par dvdhag123 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 12/02/2015, 17h18
  3. Création de séquences aléatoires de chiffres avec conditions
    Par sigor16 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/02/2013, 12h35
  4. Création d'animations aléatoires
    Par Simon MARQUIS dans le forum Android
    Réponses: 1
    Dernier message: 06/07/2011, 12h31
  5. Création d'image aléatoire
    Par xoum89 dans le forum Débuter
    Réponses: 3
    Dernier message: 02/03/2011, 14h35

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