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

Android Discussion :

Tracer une ligne par des Bitmaps


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Par défaut Tracer une ligne par des Bitmaps
    Bonjour,

    J'effectue actuellement une application android qui me permet de tracer une ligne avec ces coordonnées de départ (x,y) et une longueur. Je dessine cela sur un canvas à l'aide de bitmap du coup je ne peux tracer seulement des lignes horizontales ou verticales. Mon problème est donc que j'aimerai pouvoir dessiner dans le meilleur des cas des lignes en diagonale en effectuant un premier toucher sur la tablette indiquant la position de départ et un deuxième toucher en diagonale indiquant le point d'arriver et la longueur, mais je n'arrive pas a voir comment faire. Ou alors essayer d'effectuer une rotation de ma ligne si cela est possible.

    Je suis à l'écoute de toutes propositions

    Merci

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    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 096
    Par défaut
    Tu traces des lignes a l'"aide de bitmap" ? Pourquoi ne pas tracer simplement une ligne avec drawLine(), quelques chose m'échappe la
    (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

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Par défaut
    Oui effectivement çà serait beaucoup plus simple car j'aurais mon point initial et final, seulement je reprend la suite d'un code et je ne peux pas me permettre de tout refaire cela engendrer beaucoup trop de changement, donc si je peux faire autre chose avant d'en arriver là çà serait préférable

    Voici ma classe ligne :

    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
     
    public class Ligne extends EltPlan {
    	private static final int epaisseur = 10;
    	private int a, b;
     
     
    	private Ligne(double x, double y, int pixelthickness,
    			int pixellength) {
     
    		super(x, y, pixelthickness, pixellength);
    		setPixelsLength(pixellength);
    		setPixelsThickness(pixelthickness);
    	}
     
    	private Ligne(double x, double y, float thickness,
    			float length,) {
     
    		super(x, y, thickness, length);
     
    		setPixelsLength((int) (length));
    		setPixelsThickness((int) (thickness));
    	}
     
     
     
    	/**
             * Retourne une ligne horizontal 
             */
    	public static Ligne LigneHorizontal(double x, double y, int lgr) {
    		return new Ligne(x, y, lgr, epaisseur);
    	}
     
    	/**
             * Retourne une ligne vertical 
             */
    	public static Ligne LigneVertical(double x, double y, int lgr) {
    		return new Ligne(x, y, epaisseur, lgr);
    	}
     
     
    	@Override
    	public void doBitmap() {
     
     
    		if (isSelected()) {
    			setBitmap(Bitmap.createBitmap(getPixelsThickness() + 10,
    					getPixelsLength() + 10, Config.ARGB_8888));
    			for (b = 5; b < getBitmap().getHeight() - 5; b++) {
    				for (a = 5; a < getBitmap().getWidth() - 5; a++)
    					getBitmap().setPixel(a, b, Color.GRAY);
    			}
    			for (a = 0; a < getBitmap().getWidth(); a++)
    				getBitmap().setPixel(a, 0, Color.RED);
    			for (a = 0; a < getBitmap().getWidth(); a++)
    				getBitmap().setPixel(a, getBitmap().getHeight() - 1, Color.RED);
    			for (b = 0; b < getBitmap().getHeight(); b++)
    				getBitmap().setPixel(0, b, Color.RED);
    			for (b = 0; b < getBitmap().getHeight(); b++)
    				getBitmap().setPixel(getBitmap().getWidth() - 1, b, Color.RED);
    		} else {
    			setBitmap(Bitmap.createBitmap(getPixelsThickness(),
    					getPixelsLength(), Config.ARGB_8888));
    			for (b = 0; b < getBitmap().getHeight(); b++) {
    				for (a = 0; a < getBitmap().getWidth(); a++)
    					getBitmap().setPixel(a, b, Color.GRAY);
    			}
     
    		}
     
    	}
     
    	public static int getEpaisseur() {
    		return epaisseur;
    	}
     
    }

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Par défaut
    un truc comme ça en TP d'algo c'est un coup à prendre des points négatifs .

    - 1 : reprendre les bases de l'Algorithmie.
    - 2 : se documenter sur la doc et les Api Java et Android. Line a été évoqué plus haut.

  5. #5
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    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 096
    Par défaut
    Franchement, je te dirai de reprendre ce qui ne va pas parce que franchement pour dessiner une ligne, ta méthode est totalement inefficace.

    En plus tu dis 2 choses opposées :

    - Permier click pour avoir le premier point puis deuxieme click pour le deuxieme (ce qui te donne la longueur et l'ange ce qui me semble bien correct).
    - Un click puis ensuite une longueur (bonne chance sans 2 eme click) sans angle (ce qui franchement n'est pas ultra ergonomique).

    Pour mois y'a déjà un truc qui n'est pas cohérent.
    (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. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Par défaut
    Oui je ne sais pas trop comment me sortir de là, oui mon premier click donne le point de départ et mon deuxième m'indique jusqu’où je veut aller, donc ma longueur. Et c'est vrai que dans ce cas il n'y a pas d'angle. il y a un autre souci c'est que j'ai besoin de faire pixel par pixel car j'effectue ensuite une simulation avec un algorithme de calcul COST qui calcule pixel par pixel. Sinon je voulais savoir si avec drawline() on peut choisir une épaisseur ou pas ?

    Merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. cacher une ligne par des 'etoiles'
    Par M E H D I dans le forum Général Java
    Réponses: 8
    Dernier message: 21/04/2009, 08h36
  2. remplir une combobox par des lignes
    Par Axiome dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/12/2008, 23h30
  3. [VBA-E] Séparer les colonnes d'une listbox par des lignes?
    Par mulot03 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2006, 14h03
  4. Tracer une ligne droite sans les interruptions
    Par Stef784ever dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 25/11/2002, 01h22

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