bonjour a tous
je cherche a faire ce type de slider quelqu'un pourrait m'aiguiller sur comment je peux le faire
merci
Danny
Hors ligne
Bonjour,
Tu peux t'inspirer de cela :
CurseurVolume curseur; void setup() { size(400, 400); curseur = new CurseurVolume(this, 100, 100); } void draw() { background(0); noStroke(); // La methode valeur() de la classe CurseurVolume retourne un float entre 0 et 1 rect(0, 0, 20, curseur.valeur() * 200); } public class CurseurVolume { PApplet parent; PVector position, taille; float valeur; boolean transition; CurseurVolume(PApplet _parent, int x, int y) { parent = _parent; position = new PVector(x, y); taille = new PVector(80, 40); valeur = 0; transition = false; parent.registerMethod("draw", this); parent.registerMethod("mouseEvent", this); } float valeur() { return valeur; } void draw() { pushStyle(); strokeCap(ROUND); strokeWeight(4); pushMatrix(); translate(position.x, position.y); fill(127); noStroke(); triangle(0, 0, taille.x * valeur, 0, taille.x * valeur, - taille.y * valeur); stroke(255); line(0, 0, taille.x, 0); line(0, 0, taille.x, -taille.y); line(taille.x, 0, taille.x, -taille.y); strokeWeight(6); if (transition) { stroke(255, 0, 0); } else { stroke(255); } line(taille.x * valeur, -taille.y - 5, taille.x * valeur, 5); popMatrix(); popStyle(); } void mouseEvent(processing.event.MouseEvent event) { switch (event.getAction()) { case MouseEvent.PRESS: if ((mouseX > position.x + taille.x * valeur - 3) && (mouseX < position.x + taille.x * valeur + 3) && (mouseY > position.y - taille.y - 3) && (mouseY < position.x + 3)) { transition = true; } break; case MouseEvent.DRAG: if (transition) { valeur = constrain((mouseX - position.x) / (float)taille.x, 0, 1); } break; case MouseEvent.RELEASE: transition = false; break; } } }
Hors ligne
bonjour Mushussu
oui c'est en plein ça que je veux. Mais aurait t-il une façon sans class et plus simple de le faire
javais faite ce code dans le fond ça fais la même chose mais avec un arc
void setup(){ size(400,400); background(0); } void draw(){ float a = map(mouseX,100,300,radians(270),radians(630)); pushStyle(); noFill(); stroke(255,255,255,60); strokeWeight(8); strokeCap(ROUND); arc(200, 200, 100, 100, radians(0), radians(360)); //Arc principale stroke(255,0,0,200); arc(200, 200, 100, 100, radians(270),(a)%radians(630)); //Arc visuel popStyle(); }
merci
Hors ligne
Que veux-tu exactement, de la visualisation ou bien un contrôleur.
Si tu veux un contrôleur, pourquoi te priver de l'utilisation d'outils puissants telles que les classes ?
Ce que tu proposes dans ton deuxième message n'a absolument rien à voir avec l'image de ton premier message.
Hors ligne
j'ai besoin des 2 visualisation et contrôleur la parti contrôleur je peux me débrouiller mais je bug sur la visualisation des 2 triangle
mais de mon coter j’utilise déjà une class alors une class dans une class...
de plus je ne suis pas familier avec les terme que tu utilise dans ta class
ce que j'ai besoin c’est exactement ce que tu ma montrer mais pas en class pour l’inclure dans ma class
en gros j’ai besoin de seulement 2 triangle rectangle un qui est vide mais stroker et l’autre qui rempli jusqu'au curseur selon la position du curseur
a moins que ce sois facile a implémenter dans ma class
Dernière modification par imdidi (2016-11-14 21:08:01)
Hors ligne
Pour le potentiomètre rotatif pourquoi ne pas utiliser la librairie ControlP5 ?
Tu peux bien évidement utiliser une instance de classe dans une autre classe.
Hors ligne
je vais essayer de jongler avec tout ça
Merci pour ton temps
A+
Hors ligne
Tu devrais plutot dessiner en polaire qu'en cartésien, un peu de thalès ou de règle de 3 et le tour est joué.
Tu fais une fonction draw triangle et tu l'appelles deux fois, d'abord pour dessiner le fond, puis la valeur et tu traces une ligne par dessus.
Hors ligne