begin process at 2008 07 20 04:59:04
1 213 135 membres
56 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[MIRC] PICWIN APPROFONDISSEMENT


Information sur le tutorial

Catégorie :Tutoriaux Date de création : 09/03/2005 21:36:09 Vu : 6 253 fois

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Tutorial

Picwin, approfondissement.

 

I) Introduction

Ce tutorial et la suite du tutorial "Les bases du picwin" disponible ici .

Ici nous allons apprendre a creer un bouton dynamique, un check, un text défilant et un edit.

II) Bouton dynamique

Ici nous allons faire un effet lorsque l'on survole un bouton.Voici le code commenté entièrement :

; on creer l'alias bout
alias bout {
; on ouvre une fenetre
window -Ckdip +Let @te 1 1 70 70
; on dessiner un bouton grace a deux rectangle, un noir et un gris pour fair l'effet ressortit
; remarque : il est important de faire celui pour l'effet ressorti avant pour ne pas avoir un bouton de couleur grise

drawrect @te 14 1 10 10 31 11
drawrect @te 1 1 10 10 30 10

; si on est minutieux, on dessine des points blanc sur l'ombre afin de faire pile poil l'ombre (facultatif)
drawdot @te 0 1 40 10
drawdot @te 0 1 10 20
}
menu @te {
mouse: {

; si on bouge la souris dans le rectangle .......
if $inrect($mouse.x,$mouse.y,10,10,30,10) {
; on efface toute la win grace a un drawrect -f de couleur 0 (a changer suivant le fond de votre win)
drawrect -f @te 0 1 0 0 70 70
; on dessine le meme bouton mais avec un effet renfoncé cette fois,
; donc un autre rectangle au dessus du premier

drawrect @te 14 1 9 9 31 11
drawrect @te 1 1 10 10 30 10

; pareil, on peut ajuster le renfoncement
drawdot @te 0 1 39 9
drawdot @te 0 1 9 19
}

; si la souris n'es pas dans le rectangle indiqué si dessus :
else {
; on efface tout et on refais le bouton normal :)
drawrect -f @te 0 1 0 0 70 70
drawrect @te 14 1 10 10 31 11
drawrect @te 1 1 10 10 30 10
drawdot @te 0 1 40 10
drawdot @te 0 1 10 20
}
}
}

III) Check, Radio

Rien de plus simple ! Pour le check on dessine un petit carré avec ce que l'on veut a coté et lorsque l'on clique dessus et ca coche, ou décoche en fonction d'une variable :)

alias check {
;on ouvre une @window (c'est toujours pareil :x)
window -Ckdp +LetB @check 1 1 80 60
; on dessine un carré pour faire le check
drawrect @check 1 1 10 10 15 15
; on dessine des cercles pour faire les radio
drawrect -e @check 1 1 30 10 15 15
drawrect -e @check 1 1 50 10 15 15
}
menu @check {
sclick {

; si on clique dans le rectangle bla bla bla bla :
if $inrect($mouse.x,$mouse.y,10,10,15,15) {
; et si la variable est sur on, on efface le contenu du check, donc on déselectionne le check
; on change aussi la variable de position

if %check == on { drawrect -f @check 0 1 11 11 13 13 | set %check off }
; sinon : on dessine un point dans le check et on change aussi la variable de position
; personellement j'ai mis un point mais on peut mettre un "X" ou des lignes peut importe.

else { drawdot @check 4 4 19 19 | set %check on }
}
; pour les radios
; Si on clique dans le premier cercle (noter que j'ai quand meme mis un $inrect malgré le cercle on va pas s'embeter avec ca)
; on efface le point de l'autre radio correspondant et on met un point sur celui selectionné

if $inrect($mouse.x,$mouse.y,30,10,15,15) { drawdot @check 4 4 39 19 | drawdot @check 0 4 59 19 }
; et inversement ;)
if $inrect($mouse.x,$mouse.y,50,10,15,15) { drawdot @check 0 4 39 19 | drawdot @check 4 4 59 19 }
}
}

IV) Texte defilant

Le principte est de dessiner une texte a un endroit et d'augmenter la distance a chaque fois afin d'avoir l'impression que le text avance.

Soit le code :

alias text {
; on fais une variable %text qui donne la position du text en largeur
set %text 1
; on ouvre une window
window -Ckp +Let @text 1 1 500 50
; on dessine déja le text une fois
drawtext @text 5 %text 8 Ceci est un texte
; on lance un timer qui va effectuer l'alias text2 tout les 50 millisecondes (cf aide mirc /timer)
; vous pouvez changer le 50 pour modifier la vitesse du texte

.timertext -ho 0 50 text2
}

alias text2 {
; si la variable est inferieur ou égale a 500 (soit le bors de la win) on arrète (ca sert a rien de continuer alors que l'on voit plus le texte
if (%text <= 500) {
; on efface toute la fenetre sinon il va nous rester tout les drawtext précédents
drawrect -f @text 0 1 0 0 500 50
; on incrémente la variable pour faire "avancer" le texte
inc %text
; on redessine le text, et comme par miracle, il a avancé d'un pixel :)
drawtext @text 5 %text 8 Ceci est un texte
}
}
; on rajoute un event pour que lorsque l'on ferme la win et que le timer n'es pas terminé, on ai pas de messages d'erreur
on *:close:@text: .timertext off

V) Edit

Simple edit servant juste a montrer le principe et le fonctionnement.

Ce n'est qu'un enchainement de variable et un rectangle, rien de plus. J'ai juste faire un rectange ce n'est pas le design qui m'interressait pour cet exemple.

alias edit {
; met un petit truc dans la variable pour ne pas qu'elle soit nulle
set %edit $+
; on ouvre la fenetre
window -pCk +Letd @ed 1 1 120 40
; on dessine l'edit
; ici je me suis pas embété, j'ai juste fais un simple rectange

drawrect @ed 1 1 10 10 100 20
}
; réaction a l'evenement keydown
on *:keydown:@ed:*:{
; si on ne presse pas la touche retour arrière :
if ($keyval != 8) {
; si on presse la touche espace :
if ($keyval == 32) {
; on ouvre une nouvelle variable avec la première comprise plus le caractère espace
set %edit2 %edit $+ $chr(160)
; on met la première variable égale a la première
; pas super comme technique mais c'est pratique

set %edit %edit2
; on dessine le texte
drawtext @ed 4 12 14 %edit
}
; si c'est un autre caractère que le 32 :
else {
; on ouvre une nouvelle variable avec la première comprise plus le caractère spécifié
set %edit2 %edit $+ $keychar
; toujours pareil :s
set %edit %edit2
; et on redessine le texte
drawtext @ed 4 12 14 %edit
}
}
; si le keyval est 8 (soit la touche retour arrière)
else {
; on prend toutes les lettres de %edit sauf la dernière
set %edit2 $left(%edit,$calc($len(%edit) - 1))
set %edit %edit2
; on efface le dessin et on refais le rectangle
drawrect -f @ed 0 1 0 0 120 40
drawrect @ed 1 1 10 10 100 20
; si %edit n'est pas nul (pour eviter les message d'erreur)
if (%edit) {
; on dessine la phrase sans la dernière caractère
drawtext @ed 4 12 14 %edit
}
}
}

VI) Conclusion

Voila j'espère que vous avez appris encore un peu plus de choses sur le picwin, que cela vous a donné une idée assez concrète des multiples possiblités du picwin.

C'est vraiment de vagues exemples mais ca mérite d'etre compris ;)


Kinder_Maxi

tidjo45@hotmail.com

version du mardi 22 février 2005

  • signaler à un administrateur
    Commentaire de jeremy29 le 18/06/2005 18:04:12

    Franchement bravo, Kinder_Maxi, j'ai enfin pûs pigé quelques chose sur les picwins.

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS