Forum Liberty Basic France
• Index
Hello,
J'ai lu avec intérêt tous les posts concernant la (les) fonction (fonctions) Getpixel sur JB
Alors une petite application s'est imposée.
J'ai finalement abandonné de la faire sur JB et de la faire sur LB.
Cela m'a évité de lire, créer, effacer le bmp sans arrêt.
L'utilisation de DLL pour la rapidité.
J'ai utilisé les fonctions suivantes:
'..............................................
Function GetPixel(hDC,x,y)
CallDLL #gdi32, "GetPixel", hDC as uLong,_
x As Long,y As Long, GetPixel As Long
End Function
'..............................................
Function GetRed(hDC,color)
blue=Int(color/(256*256))
green=Int((color-blue*256*256)/256)
GetRed=color-blue*256*256-green*256
End Function
'..............................................
Function GetGreen(hDC,color)
blue=Int(color/(256*256))
GetGreen=Int((color-blue*256*256)/256)
End Function
'..............................................
Function GetBlue(hDC,color)
GetBlue=Int(color/(256*256))
End Function
'..............................................
L'application est celle-ci : Suisse.zip
J'ai lu avec intérêt tous les posts concernant la (les) fonction (fonctions) Getpixel sur JB
Alors une petite application s'est imposée.
J'ai finalement abandonné de la faire sur JB et de la faire sur LB.
Cela m'a évité de lire, créer, effacer le bmp sans arrêt.
L'utilisation de DLL pour la rapidité.
J'ai utilisé les fonctions suivantes:
'..............................................
Function GetPixel(hDC,x,y)
CallDLL #gdi32, "GetPixel", hDC as uLong,_
x As Long,y As Long, GetPixel As Long
End Function
'..............................................
Function GetRed(hDC,color)
blue=Int(color/(256*256))
green=Int((color-blue*256*256)/256)
GetRed=color-blue*256*256-green*256
End Function
'..............................................
Function GetGreen(hDC,color)
blue=Int(color/(256*256))
GetGreen=Int((color-blue*256*256)/256)
End Function
'..............................................
Function GetBlue(hDC,color)
GetBlue=Int(color/(256*256))
End Function
'..............................................
L'application est celle-ci : Suisse.zip
____________________
Castel
Castel
Deux petites critiques:
Tu n'a pas mis tes fichiers dans un dossier, et du coup, ça décompresse en vrac.
Il a l'air de manquer l'exe et le .bas, ce qui relativise l'intérêt de l'ensemble.
A part ça, ça sort lumineux
Tu n'a pas mis tes fichiers dans un dossier, et du coup, ça décompresse en vrac.
Il a l'air de manquer l'exe et le .bas, ce qui relativise l'intérêt de l'ensemble.
A part ça, ça sort lumineux
____________________
Roro
Roro
Décidément je dois me rendre à l’évidence que je n’en fait pas une de bonne.
J’oublie toujours quelque chose. Peut-être je peut dire que je venait de le terminer et
j’étais pressé de le poster.
Je vais revoir le tout et je le poste à nouveau. Cette fois en mettant le tout dans un dossier.
Bonnes fêtes
J’oublie toujours quelque chose. Peut-être je peut dire que je venait de le terminer et
j’étais pressé de le poster.
Je vais revoir le tout et je le poste à nouveau. Cette fois en mettant le tout dans un dossier.
Bonnes fêtes
____________________
Castel
Castel
J'ai été voir dans ton stock, il y a bien un dossier "Suisse" mais il est vide et il y a deux zip "Suisse" aux contenus identiques.
Si tu re-uploade un zip, il faut d'abord détruire l'ancien (icône corbeille sous le zip; ça te remet en haut de page, avec "ajouter un fichier" à droite) avant d'uploader le nouveau.
Dans le cas présent il faut détruire les deux "Suisse" et uploader le nouveau (avec le même nom sinon le lien n'est plus bon).
Note: Si tu poste pour le forum, ce n'est pas la peine de faire un exe avec les dll.
L'exe n'est nécessaire que si tu poste un soft pour quelqu'un qui n'a pas l'interpréteur (c'est le cas pour mon dernier "images to htm" dont je sortirai l'exe et les dll quand la personne qui l'a demandé l'aura pris(pour soulager le stockage)
Si tu re-uploade un zip, il faut d'abord détruire l'ancien (icône corbeille sous le zip; ça te remet en haut de page, avec "ajouter un fichier" à droite) avant d'uploader le nouveau.
Dans le cas présent il faut détruire les deux "Suisse" et uploader le nouveau (avec le même nom sinon le lien n'est plus bon).
Note: Si tu poste pour le forum, ce n'est pas la peine de faire un exe avec les dll.
L'exe n'est nécessaire que si tu poste un soft pour quelqu'un qui n'a pas l'interpréteur (c'est le cas pour mon dernier "images to htm" dont je sortirai l'exe et les dll quand la personne qui l'a demandé l'aura pris(pour soulager le stockage)
____________________
Roro
Roro
____________________
Castel
Castel
ça y est c'est bon.
Note: J'ai supprimé le lien mort et le dossier vide.
Ton système a l'air particulièrement efficace, car même en réduisant la carte ça continue de fonctionner (of couse puisque c'est basé sur la couleur).
Mais bon, avec les dll c'est sûr que c'est beaucoup plus puissant que JB sec
Note: Le dossier "Suisse" qui est dans le dossier général est inutile
C'est quand même étonnant de si mal maîtriser les fichiers in the dossiers alors que tu maîtrise les dll, autrement plus complexes.
Note: J'ai supprimé le lien mort et le dossier vide.
Ton système a l'air particulièrement efficace, car même en réduisant la carte ça continue de fonctionner (of couse puisque c'est basé sur la couleur).
Mais bon, avec les dll c'est sûr que c'est beaucoup plus puissant que JB sec
Note: Le dossier "Suisse" qui est dans le dossier général est inutile
C'est quand même étonnant de si mal maîtriser les fichiers in the dossiers alors que tu maîtrise les dll, autrement plus complexes.
____________________
Roro
Roro
C’est toujours bien de savoir comment extraire manuellement une racine carrée d’un nombre et d’en comprendre le principe. Mais aujourd’hui pratiquement plus personne ne le fait manuellement.
Il y a les calculatrices et il y a aussi les DLL qui dans certains cas sont très utiles.
Alors pourquoi s’en priver ... il suffit de faire attention à les manipuler.
J’ai lu le cours d’Alice Watson sur les API. Il y a encore du boulot.
Il y a les calculatrices et il y a aussi les DLL qui dans certains cas sont très utiles.
Alors pourquoi s’en priver ... il suffit de faire attention à les manipuler.
J’ai lu le cours d’Alice Watson sur les API. Il y a encore du boulot.
____________________
Castel
Castel
Citation:
C'est fait et j'ai supprimé le dossier vide dans ton stock.
Ton système ouvre de belles perspectives.
Merci de me supprimer le lien mort.
C'est fait et j'ai supprimé le dossier vide dans ton stock.
Ton système ouvre de belles perspectives.
____________________
Castel
Castel
J’ai essayé de mettre un dossier que j’ai créé et j’ai aussi mis des fichiers dedans.
Je n’ai pas réussi, et j’avoue ne pas savoir malgré avoir longtemps essayé.
Je dois me résigner à envoyer un zip.
J’essaierai encore peut être qu’un jour j’y arriverais.
Et si tu m’envoyais une vidéo pour que je puisse voir comment faire afin de ne pas mourir bête ?
Je n’ai pas réussi, et j’avoue ne pas savoir malgré avoir longtemps essayé.
Je dois me résigner à envoyer un zip.
J’essaierai encore peut être qu’un jour j’y arriverais.
Et si tu m’envoyais une vidéo pour que je puisse voir comment faire afin de ne pas mourir bête ?
____________________
Castel
Castel
Tu as vu aussi qu’avec les dll on peut changer l’icône en haut à gauche.
Cela change de la sempiternelle Torche.
Cela change de la sempiternelle Torche.
____________________
Castel
Castel
Bah tu sais très bien faire les zip's, qui compressés pèsent moins lourd. (moins de données consommées et autres avantages...temps de transfert et ses aléas)
____________________
Roro
Roro
Roland:
Ton système ouvre de belles perspectives.
En fait les perspectives étaient déjà bien ouvertes car la même chose est faisable en JB
Mais ça reste un bel exemple d'emploi de dll.
Ton système ouvre de belles perspectives.
En fait les perspectives étaient déjà bien ouvertes car la même chose est faisable en JB
Mais ça reste un bel exemple d'emploi de dll.
____________________
Roro
Roro
Citation:
En JB on peut faire ça:
(mettre le code dans un dossier avec ta carte; résultats dans la mainwin (aux clics)
Traitement au choix, le tien ne semble pas optimisable. (le select case paraît incontournable; sauf à faire deux tableaux un pour les couleurs couplé à un deuxième pour les textes, ou un tableau à deux dimensions en passant par val(couleur$).
Il y a plusieurs façon de cuire une volaille (proverbe US/UK)
Sachant que le traitement des tableaux est rapide ça vaudrait de comparer les temps "en tableaux" et "en select case". Ah ben nan, on va se taper n "if then". Le select case est bien incontournable.
Code VB :
Peut-être, mais avant de me lancer dans la réalisation de l’application , j’ai regardé un partout et je n’ai rien trouvé de semblable comme celle que j’ai faite !
En JB on peut faire ça:
(mettre le code dans un dossier avec ta carte; résultats dans la mainwin (aux clics)
Traitement au choix, le tien ne semble pas optimisable. (le select case paraît incontournable; sauf à faire deux tableaux un pour les couleurs couplé à un deuxième pour les textes, ou un tableau à deux dimensions en passant par val(couleur$).
Il y a plusieurs façon de cuire une volaille (proverbe US/UK)
Sachant que le traitement des tableaux est rapide ça vaudrait de comparer les temps "en tableaux" et "en select case". Ah ben nan, on va se taper n "if then". Le select case est bien incontournable.
Code VB :
' NOMAINWIN Filedialog "Open Bitmap","*.bmp", picFile$ if picFile$="" then wait Open picFile$ for Input as #pic pic$=Input$(#pic, LOF(#pic)) Close #pic picWidth = Asc(Mid$(pic$, 19, 1)) + (Asc(Mid$(pic$, 20, 1)) * 256) picHeight = Asc(Mid$(pic$, 23, 1)) + (Asc(Mid$(pic$, 24, 1)) * 256) if picWidth+220 > DisplayWidth-10 then notice,"L'image est trop large pour l'écran": wait if picHeight+50 > DisplayHeight-20 then notice,"L'image est trop haute pour l'écran": wait if picWidth <100 then notice,"Limite inférieure 100 x 100pxl": wait if picHeight <100 then notice,"Limite inférieure 100 x 100pxl": wait tempsnoaff=picWidth*picHeight*3.5/1000 'en ms '---------------fin mesure bmp------------- mapw=picWidth: maph= picHeight WindowWidth=mapw+15: WindowHeight=maph+40 UpperLeftX = 10: UpperLeftY = 20 ' TEXTBOX #w.letextbox, 20 , 50, 180, 25 ' BUTTON #w.go, "Go !", [go], UL, 270, 50, 40, 20 GRAPHICBOX #w.g, 5, 5, mapw, maph OPEN "Help" FOR window_nf AS #w #w, "TRAPCLOSE [closeHelp]" #w.g, "when leftButtonDown [coord]" '#w.g, "when mouseMove [coord]" #w.g, "down;fill darkpink;color white;backcolor darkpink" loadbmp "image", picFile$ #w.g, "drawbmp image 0 0" #w.g, "flush" wait [coord] mX = MouseX : mY = MouseY col$ = GetPixelValue$(mX,mY) print col$ wait function GetPixelValue$(x, y) #w.g, "getbmp gpv "; x; " "; y; " "; 1; " "; 1 bmpsave "gpv", "getpvaluetemp.bmp" open "getpvaluetemp.bmp" for input as #gpv s$ = input$(#gpv, lof(#gpv)) close #gpv if asc(mid$(s$, 29, 1)) = 32 then red = asc(mid$(s$, 69, 1)) green = asc(mid$(s$, 68, 1)) blue = asc(mid$(s$, 67, 1)) end if GetPixelValue$ = str$(red)+" "+str$(green)+" "+str$(blue) kill "getpvaluetemp.bmp" unloadbmp "gpv" end function [pause] timer 400, [temps] wait [temps] timer 0 return [closeHelp] unloadbmp "image" CLOSE #w END
____________________
Castel
Castel
Suite du: 15h03
Traitement en tableaux:
Après test (boucle de 26 pas), les temps sont strictement égaux
Concluse: Le trairement en tableaux prend moins de place
Code VB :
Traitement en tableaux:
Après test (boucle de 26 pas), les temps sont strictement égaux
Concluse: Le trairement en tableaux prend moins de place
Code VB :
'......dim...ect... color$="206 206 0 181 0 181 255 132 132 107 57 8 132 132 255" text$="vert violet rose marron bleu" a=1 for x=1 to 5 '---to n couleurs col$(x)=word$(color$,a)+" "+word$(color$,a+1)+" "+word$(color$,a+2) tet$(x)=word$(text$,x) a=a+3 next x wait [coord] mX = MouseX : mY = MouseY c$ = GetPixelValue$(mX,mY) print c$ gosub [sel$] print texte$ wait [sel$] a=1 for x=1 to 5 '---to n couleurs If c$= col$(x) then texte$=tet$(x) '---ou word$(text$,x) end if next x return ' function GetPix.... '....ect...
____________________
Roro
Roro
• Index
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie