FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Klaus Aujourd'hui à 19:48

» KGF_dll - nouvelles versions
par pascal10000 Aujourd'hui à 17:27

» Mah-Jong européen new-look
par Minibug Hier à 22:31

» track_bar circulaire
par Klaus Hier à 13:54

» API Windows
par Klaus Hier à 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

» hommage
par Jicehel Ven 8 Déc 2017 - 11:29

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 8 Déc 2017 - 10:43

» carte son
par Klaus Ven 8 Déc 2017 - 2:37

» mise a jour calculatrice
par joeeee2017 Mer 6 Déc 2017 - 22:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Un agrandisseur

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Un agrandisseur   Ven 14 Mar 2014 - 19:11

Ou plutôt une loupe, pour voir en détail les pixels d'une zone de l'écran (une icône, une portion d'image, du texte etc.)
On sélectionne à la souris la zone à analyser, qui s'affiche grandeur nature dans un picture, et agrandie (ici 8 fois, mais c'est modulable) avec les pixels séparés dans un autre picture.
Ensuite, en cliquant sur un pixel (agrandi), on obtient sa position relative et ses composantes de couleurs.
Il faut disposer de IrfanView, pour la capture.
La zone à capturer peut être quelconque, mais c'est plutôt prévu pour des zones de quelques dizaines de pixels, genre une icône. Avec le facteur multiplicateur, ça devient vite envahissant !

Usage: cliquer le bouton 'Capturer', une croix apparaît au centre de l'écran, on la déplace à la souris sur le coin haut gauche de la capture, on clique, puis on re-clique sur le coin bas droit pour sélectionner.

Le programme ne fait qu'une soixantaine de lignes:
Code:
' Agrandir une zone de l'écran pour voir sa structure
LABEL Capt, Pixel
DIM iv$,x0%,y0%,r%,g%,b%,x1%,y1%,res%,xs%,ys%,f$,w%,h%,mult%,a$
f$ = "C:\Temp\ima.bmp"
iv$ = "C:\Progra~2\Irfanv~1\i_view32.exe "
mult% = 8: ' facteur de grossissement

WIDTH 0,60: HEIGHT 0,70: BORDER_SMALL 0: font_bold 0: CAPTION 0,"Capture"
BUTTON 1: HEIGHT 1,20: CAPTION 1,"Capturer": ON_CLICK 1,Capt
PICTURE 20: TOP 20,20: LEFT 20,0
2D_TARGET_IS 20: CLS: CLIPBOARD_COPY 20
PICTURE 30
ALPHA 5: TOP 5,10: LEFT 5,WIDTH(20)+20: FONT_SIZE 5,12: ON_CLICK 30,Pixel
ALPHA 6: TOP 6,35: LEFT 6,LEFT(5): FONT_SIZE 6,12
END
' ==============================================================================
Capt:
IF FILE_EXISTS(f$) = 1 THEN FILE_DELETE f$
EXECUTE_WAIT iv$ + "/capture=4 /convert="+f$
DimBmp(f$)
WIDTH 20,w%: HEIGHT 20,h%: LEFT 5,WIDTH(20)+40: LEFT 6,LEFT(5)
CAPTION 5,"Capture = "+STR$(w%)+" x " + STR$(h%)
TOP 30,h%+25: WIDTH 30,mult%*w%: HEIGHT 30,mult%*h%
WIDTH 0,950: HEIGHT 0,950
FILE_LOAD 20, f$
2D_TARGET_IS 30: CLS
FOR y0% = 0 TO HEIGHT(20)
    FOR x0% = 0 TO WIDTH(20)
        r%=COLOR_PIXEL_RED(20,x0%,y0%)
        g%=COLOR_PIXEL_GREEN(20,x0%,y0%)
        b%=COLOR_PIXEL_BLUE(20,x0%,y0%)
        x1%=x0%*mult%: y1% = y0%*mult%
        2D_PEN_COLOR r%,g%,b%: 2D_FILL_COLOR r%,g%,b%
        2D_RECTANGLE x1%,y1%,x1%+mult%-1,y1%+mult%-1
    NEXT x0%
    display
NEXT y0%
CAPTION 6,"Clic un pixel pour position et couleur"
RETURN
' ==============================================================================
Pixel:
x0% = MOUSE_X_LEFT_DOWN(30): y0% = MOUSE_Y_LEFT_DOWN(30)
r%=COLOR_PIXEL_RED(30,x0%,y0%)
g%=COLOR_PIXEL_GREEN(30,x0%,y0%)
b%=COLOR_PIXEL_BLUE(30,x0%,y0%)
x0% = INT(x0%/mult%): y0% = INT(y0%/mult%)
a$ = "x="+STR$(x0%)+"  y="+STR$(y0%)+CHR$(10)+"R="+STR$(r%)+"  G="+STR$(g%)+"  B="+STR$(b%)
CAPTION 6,a$
RETURN
' ==============================================================================
SUB DimBmp(f$)
' Dimensions d'une image bmp -> w%, h% (largeur, hauteur en pixels)
DIM_LOCAL v%(8)
IF VARIABLE("w%") = 0 THEN DIM w%
IF VARIABLE("h%") = 0 THEN DIM h%
FILEBIN_OPEN_READ 9, f$
    FILEBIN_POSITION 9, 18: FILEBIN_BLOCK_READ 9,8,v%(0)
    w% = v%(0)+256*v%(1)+65536*v%(2)+16777216*v%(3)
    h% = v%(4)+256*v%(5)+65536*v%(6)+16777216*v%(7)
FILEBIN_CLOSE 9
END_SUB
' ==============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sergeauze

avatar

Nombre de messages : 391
Age : 65
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

MessageSujet: Re: Un agrandisseur   Ven 14 Mar 2014 - 22:40

salut
un magnifique programme
Je viens de le tester
Je vais l’étudier en profondeur et surement y trouver  quelques astuces
qui me permettront de finaliser celui sur lequel je travaille
Qui disait que c’était calme sur le forum
En secret se préparent   des choses nouvelles
Vous connaissez:" Mars qui rit malgre les averses ,prépare en secret le printemps"
De Panoramic  bien sur ,
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sergeauze.blog-video.tv/
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Un agrandisseur   Ven 14 Mar 2014 - 23:55

Joli, j'avais fais une loupe aussi dans un éditeur de sprites, mais je ne sais même plus si je l'avais publié quand je travaillais sur mon Barbarian...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Un agrandisseur   Sam 15 Mar 2014 - 0:43

Merci à tous les deux, mais ce n'est pas bien compliqué, c'était histoire d'entretenir la flamme (et non pas la flemme).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sergeauze

avatar

Nombre de messages : 391
Age : 65
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

MessageSujet: Re: Un agrandisseur   Sam 15 Mar 2014 - 20:15

Salut
Je ne parviens  pas  à retrouver  comment  tu as procédè  pour créer  la mire de sélection .
Je trouve que c'est original .
Pourrais-tu me mettre  sur la voie
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sergeauze.blog-video.tv/
jjn4

avatar

Nombre de messages : 1626
Date d'inscription : 13/09/2009

MessageSujet: +++   Sam 15 Mar 2014 - 20:56

C'est bizarre, je ne comprends pas
pourquoi ça ne marche pas chez moi.
l'ordinateur me dit qu'il y a une erreur à la ligne 19
et qu'il ne trouve pas "C:\Progra~2\Irfanv~1\i_view32.exe "
et pourtant, i_view32.exe est bien à cet endroit.
Bizarre, bizarre...
 scratch alien scratch 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Un agrandisseur   Sam 15 Mar 2014 - 21:19

Reconstruis le nom court chez toi. Il n'est peut-être pas le même que sur le système d'où vient le source. Ca m'a déjà fait ça. En effet, le com court dépend largement du contenu des différents dossiers.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
sergeauze

avatar

Nombre de messages : 391
Age : 65
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

MessageSujet: Re: Un agrandisseur   Sam 15 Mar 2014 - 22:02

Salut
J'ai parfois ce pb

le chemin chez moi , par exemple est:
" C:\Progra~1\Irfanv~1\i_view32.exe "
Faire aussi attention  au  " qui nos joue de tours
Un utilitaire :DOsname  m'a souvent bien rendu service
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sergeauze.blog-video.tv/
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Un agrandisseur   Sam 15 Mar 2014 - 22:50

Bonsoir (j'étais absent),

C'est vrai que le mieux est de recalculer le nom court à partir du chemin complet (sous xp IrfanView est sous Program Files, sous w7 Program files (x86)), il y a des subs pour ça, mais j'ai voulu faire court, mais on a ça par exemple, tout simple, avec le résultat dans le presse-papier:
Code:
SUB FileShort(f$)
' Chemin court fichier f$ -> clipboard
DIM_LOCAL fb$: fb$ = "C:\Temp\Carfich.bat"
FILE_OPEN_WRITE 9,fb$
    FILE_WRITELN 9, "@echo off"
    FILE_WRITELN 9, "FOR %%? IN ("+CHR$(34)+f$+CHR$(34)+") DO ECHO %%~sf? | clip"
FILE_CLOSE 9
EXECUTE_WAIT fb$: FILE_DELETE fb$
END_SUB
Il suffit de mettre en tête le chemin complet, qui est pour moi:
Code:
fiv$ = "C:\Program Files (x86)\IrfanView\i_view32.exe"
et de rajouter juste avant l'Execute_Wait iv$:
Code:
FileShort(fiv$): iv$ = CLIPBOARD_STRING_PASTE$
et ne pas oublier de rajouter un espace dans les paramètres, avant le /capture <- c'est inutile finalement, la chaîne rendue se termine par un caractère 10 (linefeed) qui fait l'affaire comme séparateur.


@jjn4 s'il ne le trouve pas, c'est que ton chemin court n'est pas bon (probablement Progra~1 au lieu de Progra~2 chez moi), mais le mieux est de le faire calculer par la bécane...

@sergeauze,
Il n'y a aucune difficulté ni astuce cachée, j'analyse l'image d'origine pixel par pixel, du haut en bas et de gauche à droite, je récupère la couleur du pixel lu, et je crée un petit carré de la même couleur dans l'image finale (ici 7x7 pixels pour un grossissement de 8 ), en laissant un pixel vide pour faire la séparation avec le suivant, chaque emplacement du carré destinataire étant séparé de 8 pixels du précédent, en largeur et en hauteur.

Il faut d'abord dimensionner le picture destinataire en fonction des dimensions de l'image d'origine (ici 8 fois plus grand pour un grossissement de 8 ).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

Nombre de messages : 1626
Date d'inscription : 13/09/2009

MessageSujet: ???   Sam 15 Mar 2014 - 23:36

Quelle est la différence entre Progra~1 et Progra~2   ??????
 scratch  scratch  scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Un agrandisseur   Sam 15 Mar 2014 - 23:41

Progra~1 est l'abréviation de 'Program Files' (emplacement des programmes sous Windows Vista et précédents)
Progra~2 est l'abréviation de 'Program Files (x86)' (emplacement des programmes sous Windows 7, et suivants je suppose)
Ces abréviations sont celles qui sont données par le système dans les noms courts de chemins;

Remarque: sous Windows 7 j'ai les deux: Program Files, et Program Files (x86), les programmes qui étaient installés auparavant dans Program Files (sous XP) sont installés maintenant dans Program Files (x86)... c'est comme ça sous W7... simple, non ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Un agrandisseur   Dim 16 Mar 2014 - 3:23

La construction d'un nom court est légèrement plus complexe que ç&. Et c'est bien pour ça qu'il y a des fonctions Microsoft qui le font, et toute une série de codes en différents lengages qui essaient de simuler leur comportement, à défaut de le reproduire avec exactitude.

Bien sûr, dans le cas de "Program Files", ton explication semble pertinente. Mais, pour la découverte, essaie de rajouter un dossier "Program Files bis", puis demande au système de te donner les noms courts de ces 3 dossiers...

Pour faire court, le chiffre après le signe "~" représente le numéro d'ordre dans lequel on trouve le dossier concerné dans le dossier parent, avec les 6 premier caractères étant identiques. Et encore - s'il y a plus de 9 dossiers (ou fichiers) dans le dossier parent dont les 6 premiers caractères sont identiques, on a un nombre de 2 chiffres après la tilde, et forcément une prise en compte des 5 premiers caractères pour regrouper tout cela, ce qui change tout à nouveau.

Mais ce n'est pas tout, malheureusement. Car sous XP, Vista, Seven etc, on peut utiliser des caractères dans les noms de fichiers qu'on ne pouvait pas utiliser sous MS-DOS ! Et donc, tous ces caractères sont éliminés du nom court, et ce mécanisme change également le calcul du nombre placé après la tilde. Pour comprendre, créez, dans un même dossier, les fichiers:
Citation :

aaaaa.dat
aaaaaa.dat
aaaaaaa.dat
aaaaa_a.dat
aaaa_aa.dat
aaaaa-a.dat
aaaa-aa.dat
aaaa-_a.dat
puis calculez le nom court de tout ça. Vous serez surpris du résultat.

Et pire: cela ne dépend non seulement du nom lui-même et de sa position dans le fichier (qui d'ailleurs n'est pas nécessairement lié à l'ordre alphabétique ou ASCII !). Cela dépend également du moment de création du fichier. Car enfin, on ne va pas changer le nom court d'un fichier existant, sous prétexte de créer un autre fichier dont les 6 premier caractères seraient identiques ! Dans l'exemple ci-dessus, le résultat n'est pas le même si vous créez ces fichiers dans un ordre différent !

Donc, mon conseil, réitéré avec insistance, est de ne jamais reprendre un nom court par copier/coller d'un autre dossier en essayant de changer une partie du nom, de ne jamais prendre un nom court dans un source établi sur une autre machine (via le forum par exemple), mais de toujours reconstruire le nom court dynamiquement, au minimum lors du démarrage du programme si l'on a la certitude que le contenu du dossier parent ne change pas pendant la durée de vie du programme, ou de le reconstruire immédiatement avant chaque utilisation si le dossier parent est appelé à évoluer en cours de vie du programme.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Un agrandisseur   Dim 16 Mar 2014 - 11:50

Bien d'accord avec toi Klaus sur le fait qu'il ne faut pas utiliser le nom court de quelqu'un d'autre, mais le générer systématiquement soi-même (le faire générer par son propre système) avec une sub adéquate.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

Nombre de messages : 1626
Date d'inscription : 13/09/2009

MessageSujet: +++   Dim 16 Mar 2014 - 16:42

Merci pour toutes ces explications très instructives.
D'ailleurs, ça y est, ça marche.
Et c'est vrai que le programme est joli.
 cheers alien king 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Un agrandisseur   Dim 16 Mar 2014 - 19:35

Je viens de tester : intéressant.
Merci JL35.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé




MessageSujet: Re: Un agrandisseur   

Revenir en haut Aller en bas
 
Un agrandisseur
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: