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

Smalltalk Discussion :

Logiciel Dessin Smalltalk Squeak


Sujet :

Smalltalk

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Logiciel Dessin Smalltalk Squeak
    Bonjour,

    Je suis en train d’essayer de réaliser un logiciel de dessin avec Squeak (version 4.3).
    A l'aide d'Internet et de mes recherches j'ai réussi à réaliser une grande partie mais il y a deux choses que je n'arrive pas à faire.
    J'aimerais pouvoir changer la couleur du pinceau ainsi que sa taille en rajoutant une option pour chaque dans le menu (comme pou clear).

    Voilà le code :

    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
     
    ~~~~~~~PicoDrawing~~~~~~~
     
    "Subclass"
    Object subclass: #NameOfSubclass
    	instanceVariableNames: ''
    	classVariableNames: ''
    	poolDictionaries: ''
    	category: 'Morphic-Fun'
     
     
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    "Methods"
    extent: aPoint
    	| newForm |
    	super extent: aPoint.
    	newForm := Form extent: self extent depth: 16.
    	newForm fillColor: Color veryLightGray.
    	form ifNotNil: [form displayOn: newForm].
    	form := newForm.
     
     
    initialize
    	super initialize.
    	self extent: 500@350.
     
     
    handlesMouseDown: evt
    	^ true
     
     
    drawOn: aCanvas
    	aCanvas image: form at: bounds origin.
     
     
    mouseDown: evt
    	brush := Pen newOnForm: form.
    	brush roundNib: 3.
    	brush color: Color red.
    	lastMouse := evt cursorPoint - bounds origin.
    	brush drawFrom: lastMouse to: lastMouse.
    	self invalidRect:
    	((lastMouse - brush sourceForm extent corner:
    	lastMouse + brush sourceForm extent)
    	translateBy: bounds origin).
     
     
    mouseMove: evt
    	| p |
    	p := evt cursorPoint - bounds origin.
    	p = lastMouse ifTrue: [^ self].
    	 brush drawFrom: lastMouse to: p.
    	self invalidRect: ((
    		((lastMouse min: p) - brush sourceForm extent) corner:
    		((lastMouse max: p) + brush sourceForm extent))
    			translateBy: bounds origin).
    	lastMouse := p.
     
     
    addCustomMenuItems: aCustomMenu hand: aHandMorph
    	super addCustomMenuItems: aCustomMenu hand: aHandMorph.
    	aCustomMenu add: 'clear' action: #clear.
     
     
    clear
    	form fillColor: Color veryLightGray.
    	self changed.
     
     
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    "Workspace"
     
    PicoPaintMorph new openInWorld.
    Pour rajouter les options je modifie la méthode comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    addCustomMenuItems: aCustomMenu hand: aHandMorph
    	super addCustomMenuItems: aCustomMenu hand: aHandMorph.
    	aCustomMenu add: 'clear' action: #clear.
            aCustomMenu add: 'couleur' action: #couleur.
            aCustomMenu add: 'taille' action: #taille.
    Nom : PicoDrawing.png
Affichages : 331
Taille : 361,8 Ko

    Mais je n'ai pas réussi a rendre les méthodes couleur et taille fonctionnelles...
    Est-ce que quelqu'un pourrais m'aider ? J'ai clairement épuisée toutes mes ressources et Google (Pas bcp de trucs sur Squeak :/ )

  2. #2
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Salut,

    est-ce qu'il y a une raison pour laquelle tu utilises la version 4.3 plutôt que Squeak 5 ?

    Pour la taille de la brosse, en regardant ton code on voit dans mouseDown: evt le code suivant :

    "..."
    self invalidRect:
    ((lastMouse - brush sourceForm extent corner:
    lastMouse + brush sourceForm extent)
    "..."

    On voit le même morceau de code dans mouseMove: evt. Clairement tu prends la forme de ta brosse (brush sourceForm) et tu invalides à l'écran un rectangle de sa taille (extent). Si ta brosse a une forme qui a un extent, alors ce sont ces objets qui t'intéressent. Il faut regarder le code des méthodes sourceForm et drawFrom:to: de ta brosse qui gèrent la forme, sa taille et la façon dont elle se dessine. Ce sont ces éléments que tu dois, à priori, contrôler pour modifier la forme et la taille de la brosse. Pour sa couleur, c'est pareil, regarde ces méthodes. Tu dois avoir quelque chose comme sourceForm fillColor: #color à faire.
    [|]

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Alors j'ai téléchargée la 5 mais elle ne fonctionnait pas bien (pour je ne sais qu'elle raison..) du coup vu que la 4.3 fonctionnait je suis restée dessus.

    J'ai beau réussi a avoir ce code qui tourne mais je ne m'y connais pas énormément en Squeak...^^

    C'est pourquoi, si tu le veux bien, je te demanderais de m'expliquer un peu plus les indices que tu m'as donné , Merci

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Help ?

  5. #5
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par LittleGeeky Voir le message
    Alors j'ai téléchargée la 5 mais elle ne fonctionnait pas bien (pour je ne sais qu'elle raison..) du coup vu que la 4.3 fonctionnait je suis restée dessus.

    J'ai beau réussi a avoir ce code qui tourne mais je ne m'y connais pas énormément en Squeak...^^

    C'est pourquoi, si tu le veux bien, je te demanderais de m'expliquer un peu plus les indices que tu m'as donné , Merci
    Il n'y a pas de raison pour que la version 5 ne fonctionne pas. Tu travailles sous quel OS ?

    Regarde dans le code des méthodes que j'ai relevé, tu dois avoir tout ce qu'il te faut dedans. Copy/paste le code de ces méthodes ici à la limite qu'on puisse le voir ensembles.
    [|]

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par maske Voir le message
    Il n'y a pas de raison pour que la version 5 ne fonctionne pas. Tu travailles sous quel OS ?

    Regarde dans le code des méthodes que j'ai relevé, tu dois avoir tout ce qu'il te faut dedans. Copy/paste le code de ces méthodes ici à la limite qu'on puisse le voir ensembles.
    Bonjour,

    Désolée pour le retard j’étais en formation je n'ai pas eue le temps du tout.

    Alors voila les méthodes que tu m'as demander :
    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
     
    sourceForm
     
    	^ sourceForm
     
     
    drawFrom: startPoint to: stopPoint 
     
    	 ^ self drawFrom: startPoint to: stopPoint withFirstPoint: true
     
     
    fillColor: aColorOrPattern 
    	"The destForm will be filled with this color or pattern of colors.  May be an old Color, a new type Color, a Bitmap (see BitBlt comment), a Pattern, or a Form.  6/18/96 tk"
     
    	aColorOrPattern == nil ifTrue: [halftoneForm := nil. ^ self].
    	destForm == nil ifTrue: [self error: 'Must set destForm first'].
    	halftoneForm := destForm bitPatternFor: aColorOrPattern
    J'ai tester quelques idées avec ces méthodes mais cela n'as pas aboutit :/

    J'ai aussi eue l’idée de crée un bouton avec script dans le sketch lui même afin de pouvoir modifier la couleur et la taille.

    Voici un code qui créer un bouton mais dans le "World" , je n'ai pas réussi a l’intégrer au sketch.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    "A mettre dans le Workspace"
    |BCouleur|
    BCouleur := ScriptableButton new.
    BCouleur label: 'ChoixCouleur'.
    BCouleur useRoundedCorners.
    BCouleur color: (Color white).
    BCouleur position: 10@200.
    BCouleur openInWorld.
    Et voici le script que j'utilise pour que le bouton soit opérationnel (dans le "World"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    script
    	|menuu s|
    	menuu := PopUpMenu
    	labelArray: #('Noir' 'Blanc' 'Rouge' 'Bleu' 'Vert' 'Marron' 'Orange').
            menuu startUpWithCaption: ' Veuillez choisir une couleur'.
    	s := menuu selection.
    	s = 1 ifTrue:[Mypen color:(Color black).]. 
    	s = 2 ifTrue:[Mypen  color:(Color white).].     
    	s = 3 ifTrue:[Mypen  color:(Color red).].     
    	^ self
    Déjà si j'arriverai a ajouter le bouton dans le sketch j'aurais fais un grand pas ^^ Il faudra bien sur adapter le script après....
    Est-ce que l’idée du bouton est plus facile ou même faisable ?
    Ou revenir sur l’idée de base est plus simple (intégrer dans le menu "couleur"...) ?

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    ?

Discussions similaires

  1. Logiciel Dessin sur PDF
    Par micka68210 dans le forum Langages
    Réponses: 1
    Dernier message: 09/01/2013, 18h11
  2. Logiciels pour "dessiner" HTML" ?
    Par Immo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 11/05/2006, 12h32
  3. logiciels de dessins
    Par Bibouda dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 02/11/2005, 15h21
  4. [Logiciels de dessin]Je recherche un logiciel ..
    Par arnaud_verlaine dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 17/01/2005, 12h58
  5. [Info]Rectangles de sélection : logiciel de dessin ?
    Par rozwel dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 27/03/2004, 17h49

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