cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 29 juil. 2008 à 16:35
Si tu gere toi meme l'affichage tu peux aussi faire un zbuffer
ou chaque pixel contiendra l'index de l'objet quiest dessiné dessus et ainsi recuperer l'objet a n'importe quel endroi de ton image.
@+
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 29 juil. 2008 à 16:03
Rgn certaines fois, Region d'autres.... super pratique ^^
Besoin_d_Aide
Messages postés4Date d'inscriptionlundi 20 août 2007StatutMembreDernière intervention29 juillet 2008 29 juil. 2008 à 16:01
Bonjour Renfield,
Merci de me répondre aussi vite mais j'avoue que je ne comprends pas grand chose !
Je vais chercher un exemple sur l'API PtInReg quant à l'autre méthode je ne vois pas du tout ce que c'est ! Si tu as un exemple, il sera le bien venu !
Encore merci
Olivier
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 29 juil. 2008 à 15:29
tu pourras faire une detection avec l'API PtInRgn
ou toute autre detection de collision quadrilatere/point
Besoin_d_Aide
Messages postés4Date d'inscriptionlundi 20 août 2007StatutMembreDernière intervention29 juillet 2008 29 juil. 2008 à 15:26
Bonjour,
Je viens de tester ce code : SUPER !
Je cherche ce genre d'application depuis quelques jours et je commençais à désespérer !!
Encore merci.
Cependant j'ai une petite question :
Je cherche à faire un soft permettant de placer plusieurs images sur un fond (uni) en effectuant au préalable une rotation (pour chaque image séparément).
j'en suis encore qu'à la phase 'développement intellectuel' (pas encore une seule ligne de code)
Je pensais donc utiliser ce code pour la rotation et ensuite utiliser une sorte de Drag & Drop.
(Voici la question) Une fois toutes les images placées sur le support (avec rotation ou non) est-il possible lorsque je passe la souris dessus ('MouseMove') de savoir sur quelle image je suis ??
Par avance merci
Olivier
P.S. : Si je ne suis pas assez clair, n'hésitez pas j'essaierai de faire mieux.
cs_Tropic
Messages postés90Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 1 février 2011 24 juil. 2007 à 14:26
OK C'est trouvé
En fait, c'est faire une miniature
des images de plus de 20000x20000 que je voulais.
Et ce genre d'image ne peut être traiter en mémoire.
cs_Tropic
Messages postés90Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 1 février 2011 21 juil. 2007 à 12:57
NON!
pas [PointduFichier] pourra être de n'importe quel couleur
Mais le BMP paurra être 16bits,24bits, 16 ou 256 couleurs
cs_Tropic
Messages postés90Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 1 février 2011 21 juil. 2007 à 10:57
Tu connais PlgBl
Très très très puissant comme api!
il y a un exmple d'utilisation sur www.ActiveVB.de
je ne me rappelle plus exactement le lien
Private Declare Function PlgBlt Lib "gdi32.dll" ( _
ByVal hdcDest As Long, _
lpPoint As POINTAPI, _
ByVal hdcSrc As Long, _
ByVal nXSrc As Long, _
ByVal nYSrc As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hbmMask As Long, _
ByVal xMask As Long, _
ByVal yMask As Long) As Long
Mais il travail directement sur le hdc.
Toi tu travail l'image en mémoire.
avec un tableau du style image(x,y).
J'ai fait une fonction pour récupérer
une zone d'image du style x,y,w,h d'un bitmap
directement dans le fichier et quelque soit le nombre de couleur.
Les images que je gère font plus de 20000x20000.
Ce genre d'image ne peut etre chargé en mémoire.
Je m'embrouillais avec ce multiple de 4 et ta formule m'a permis de terminer.
Maintenant, je voudrais une miniature de l'image.
Récupérer les point dans le fichier,
les miniaturiser et l'envoyer dans un tableau du style image(z).
je pense qu'il faut que je transforme tes boucles
For dy = 0 To (Dh - 1)
For dx = 0 To (dw - 1)
With bSrc(Sx, Sy)
If ((.r <> bMsk.r) Or (.g <> bMsk.g) Or (.b <> bMsk.b)) Then
bDst(Dmx, Dmy) = bSrc(Sx, Sy)
End If
End With
next
next
en une seule boucle
et que bDst(Dmx, Dmy) = bSrc(Sx, Sy)
devra être du style bDst(Dmz)=[PointduFichier]
[PointduFichier] pourra être de n'importe quel couleur
AS-TU UNE PISTE
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 20 juil. 2007 à 17:52
Tropic>De rien
cs_Tropic
Messages postés90Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 1 février 2011 20 juil. 2007 à 09:47
Merci pour cette formule
TailleAligné = (TailleNormal + 3) And Not 3
henrimaselati
Messages postés6Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention25 septembre 2007 23 févr. 2007 à 10:29
Super sympa, sauf que l'image est coupe dans les coins? comment faire pour que ca donne l'image complete. merci EBArtsoft
de m'aider. j'ai vraiment besoin du code.
merci
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 16 sept. 2006 à 22:58
EBArtSoft>Je viens juste de rentrer.
Super ton prog couvre toutes mes espérances:-o
J'aurais l'occasion hélas de le tester plus longuement demain fin de journée pour cause de déplacement.
Je te remercie beaucoup pour avoir fait ce que tu as dit ce qui est rare de nos jours.
Bonne prog.
A +
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 16 sept. 2006 à 13:49
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 15 sept. 2006 à 14:46
EBArtSoft>Merci pour ton engagement.
A +
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 15 sept. 2006 à 00:26
misterN> ok je devrais pouvoir poster la source demain ou apres demain surveil bien ton browser ;)
Hey Afyn ? tes meme pas connecté sur msn l'astico !
@+
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 14 sept. 2006 à 23:16
Balaise ... comme d'hab !
Yop
Afyn
Navedac
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 13 sept. 2006 à 10:38
on manipule bien ici la mémoire
mais pas la mémoire vidéo, nous avons ici un DIB (Device Independant Bitmap) donc stocké dans la RAM, dans un format connu, manipulable.
ne t'inquiète pas pour la taille de l'image par rapport a la resolution de l'écran, les PCs actuels sont largement capables d'avoirs 'quelques' fois la taille de l'ecran en mémoire ^^
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 13 sept. 2006 à 10:21
@Ebarsoft: Déjà merci pour SavePicture vraiment si simple.
D'autre part je voudrais juste une confirmation. Ne serait-il pas plus simple d'avoir la largeur de l'image originale en multiple de 4 et récupérer ses dimensions au runtime?
Que se passera t-il alors si la taille de l'image originale est plus grande que la résolution d'écran, si je ne me suis pas trompé EB, tu manipules l'image à partir de la mémoire vidéo?
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 12 sept. 2006 à 21:55
EBArtSoft>Une aide de cette qualité me sera grandement utile car j'en ai besoin actuellement à mon travail pour visualiser et redresser très rapidement des prises de vues de chantiers...et ne sais comment et par où commencer...
Merci d'avance
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 12 sept. 2006 à 21:49
MisterN> Presque ! La taille en Y (Height) na pas besoin d'etre aligné seule la taille en X (procédé du scanline dans le sens de la longeure). Malheureusement on ne peut pas modifier directement la propriete width sauf si la resolution est effectivement 24 bits sinon l'image resultante aura la meme resolution que le systeme. On ce retrouverais pas exemple avec une source en 32 bits et une image destination en 24. Cela dit plusieurs solutions sont envisageable si vous en avez vraiment besoin je me pencherais dessus
@+
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 12 sept. 2006 à 21:29
Salut à tous,
Chapeau à EBArtSoft une fois encore pour ce code.
Est-ce que l'on peut m'éclairer si je ne vois pas ce qui peut paraître évident?...:-(
TailleAligné = (TailleNormal + 3) And Not 3 je le comprends comme :
Width de l'image = (Width de l'image + 3 pixels) And Not 3
Height de l'image = (Height de l'image + 3 pixels) And Not 3
Est-ce que ceci peut être la parade au cas où Width et(ou) Height
ne sont pas multiples de 4 ou comment régler ce problème alors...
D'avance merci et bonne prog.
cs_Warning
Messages postés516Date d'inscriptionsamedi 3 février 2001StatutMembreDernière intervention24 octobre 20062 12 sept. 2006 à 20:21
Et l'octet supplementaire sert en VB à définir une couleur system (vbButtonFace par exemple), mais on ne s'en sert pas dans une image.
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 12 sept. 2006 à 16:36
Ahah... marrant vos petites hypothese ;p
Bon alors je rectifie :
- Pour extraire l'image dans l'ide tu ouvres paint tu clique bouton droit sur la picturebox et tu fait copié dans paint tu fait clique droit puis coller puis menu -> enregistrer sous !
- Pour extraire en run time : SavePicture Picture1,"Image.bmp"
- L'image doit avoir une taille multiple de 4 ?
On parle de sa taille en X ! c'est a dire le Picture1.ScaleWidth
Pourquoi ? tout simplement par ce que l'on traite des données RGB c'est a dire 1 octet pour le rouge 1 pour le vert 1 pour le bleue ! Ces données on les exploite sous forme de tableau VB (x,y) hors VB pour une question d'optimisation exploite des données aligné sur 4 octets (usage de registre 32 bits). CE qui va ce passer si on utilise une image non aligné c'est que l'image sera decalé ! car a la fin d'un scanline ou d'une ligne si vous preferé VB va ajouté les octet manquant et donc empieté sur la ligne suivante !
Ce probleme peut facilement etre resolu en créant une image aligné dynamiquement pour obtenir la taille d'une image aligné sur 4 octet il suffit de faire l'operation suivante :
TailleAligné = (TailleNormal + 3) And Not 3
@+
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 12 sept. 2006 à 15:56
orf -_- lol
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 12 sept. 2006 à 15:47
Ah nos messages se sont croisés ^^
Bon ben c'était pas ça :-(
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 12 sept. 2006 à 15:46
Attention, j'ai emis une simple hypothèse car je ne suis pas du tout sûr de mon coup.
Donc ne pas prendre pour argent comptant et à confirmer !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 sept. 2006 à 15:46
et non, ca ne viens pas de là ^^
ici, on fait pointer notre tableau où il faut, c'est tout....
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 12 sept. 2006 à 15:44
Ahh ok je vois
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 12 sept. 2006 à 15:41
A mon avis cela vient de là :
MemoryCopy ByVal VarPtrArray(bSrc), VarPtr(SA1), 4
Les bytes seraient traités 4 par 4 ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 sept. 2006 à 15:12
pas la taille du fichier, ca m'étonnerai fort ^^
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 12 sept. 2006 à 15:09
"l'image source doit avoir une taille multiple de 4" > aie, mais il s'agit de la taille du fichier ou des dimensions de l'image ? (et pourquoi 4 au passage?)
Sinon c'est une source super pratique
cs_Warning
Messages postés516Date d'inscriptionsamedi 3 février 2001StatutMembreDernière intervention24 octobre 20062 12 sept. 2006 à 14:00
"Autre chose le fichier frmMain.frx sans le frmMain.frm est-il suffisant pour exploiter son contenu?" > Exploiter le contenu de quoi?
Si je me souviens bien, les fichiers frx sont constitué ainsi: [longueur1](4octets)[donnée1](longueur1)[longueur2](4octects)[donnée2](longueur2) etc...
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 12 sept. 2006 à 13:42
Merci Renfield, oué ça marche, je me limitais au menu contextuel qui n'affichait pas copier alors j'ai pas cherché plus loin, grrrr ..., pourtant l'option copier est activée à partir du menu Edition.
Dommage je n'ai pas d'aide il me faut toujours aller chercher sur internet, juste une petite précision, avec "GetObject Src.Picture, Len(BmpS), BmpS" comme le fait EB, la variable BmpS (de type BITMAP) contient l'image du background, il devrait avoir une API qui permette de l'enregistrer sous...
Autre chose le fichier frmMain.frx sans le frmMain.frm est-il suffisant pour exploiter son contenu? Y'a t-il une documentation en ligne pour sa codification.?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 sept. 2006 à 13:22
le copier/coller est possible pour toutes les images, des controles ou de la Form si ce ne sont pas des icones
selectionne l'objet voulu
selectionne la propriété Picture
et presse Ctrl + C
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 12 sept. 2006 à 13:17
effectivement c'est pourquoi j'ai posé la question sous cette source.
Je pense qu'il doit avoir une API ou un petit module que vous pourriez m'écrire pour faire une sorte de enregistrer sous ... de l'image. Il faut noter que le copier/coller n'est pas possible pour le picture du form, or j'ai des forms avec des images qui m'interessent que je voulais extraire.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 sept. 2006 à 13:11
EB a fait un programme qui permet justement de lire les infos des fichiers FRX.
sinon, si ton image est de type Bitmap (pas une Icon) un simple copier/coller suffit
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 12 sept. 2006 à 13:04
Comment serait-il possible par programme d'extraire l'image de la propriété picture d'un form à partir des fichiers "frmname.frm" et "frmname.frx"?
Dans le cas du picturebox "ps" de cette appli, l'image peut être extraite par copier/coller. Comment aurait-il été possible de l'avoir par programme via les fichiers frmMain.frm et frmMain.frx?
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 12 sept. 2006 à 11:49
Effectivement, le problème viens de la résolution.
Je suis en 1024 * 768 et BmpS.bmBitsPixel = 16
Si je passe en 800 * 600 ==> BmpS.bmBitsPixel = 24
Et là cela fonctionne.
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 12 sept. 2006 à 11:30
Bouv> c'est surement un des garde fou qui a sauté ! Execute le programme en mode pas a pas. Et regarde cette ligne la => If (BmpS.bmBitsPixel <> 24) Then Exit Sub
Puis essaie de changer de resolution
@+
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 12 sept. 2006 à 10:54
Non BmpD.bmBits n'est pas nul. En fait j'ai bien l'arrière plan mais pas le ninja.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 sept. 2006 à 10:39
vérifie que BmpD.bmBits ne soit pas nul (DFB au lieu d'un DIB)
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 12 sept. 2006 à 10:14
Je sais pas pourquoi mais, chez moi cela n'affiche pas le ninja.
Et sans commentaires je ne pige pas grand chose. Du coup je peux pas dire d'où ça vient.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 sept. 2006 à 07:07
hehe, un moement que j'avais ca en tête, histoire d'aller encore plus vite qu'un Set/GetDibBits :p
cs_Warning
Messages postés516Date d'inscriptionsamedi 3 février 2001StatutMembreDernière intervention24 octobre 20062 12 sept. 2006 à 02:47
29 juil. 2008 à 16:35
ou chaque pixel contiendra l'index de l'objet quiest dessiné dessus et ainsi recuperer l'objet a n'importe quel endroi de ton image.
@+
29 juil. 2008 à 16:03
http://msdn.microsoft.com/en-us/library/ms536645(VS.85).aspx
Rgn certaines fois, Region d'autres.... super pratique ^^
29 juil. 2008 à 16:01
Merci de me répondre aussi vite mais j'avoue que je ne comprends pas grand chose !
Je vais chercher un exemple sur l'API PtInReg quant à l'autre méthode je ne vois pas du tout ce que c'est ! Si tu as un exemple, il sera le bien venu !
Encore merci
Olivier
29 juil. 2008 à 15:29
ou toute autre detection de collision quadrilatere/point
29 juil. 2008 à 15:26
Je viens de tester ce code : SUPER !
Je cherche ce genre d'application depuis quelques jours et je commençais à désespérer !!
Encore merci.
Cependant j'ai une petite question :
Je cherche à faire un soft permettant de placer plusieurs images sur un fond (uni) en effectuant au préalable une rotation (pour chaque image séparément).
j'en suis encore qu'à la phase 'développement intellectuel' (pas encore une seule ligne de code)
Je pensais donc utiliser ce code pour la rotation et ensuite utiliser une sorte de Drag & Drop.
(Voici la question) Une fois toutes les images placées sur le support (avec rotation ou non) est-il possible lorsque je passe la souris dessus ('MouseMove') de savoir sur quelle image je suis ??
Par avance merci
Olivier
P.S. : Si je ne suis pas assez clair, n'hésitez pas j'essaierai de faire mieux.
24 juil. 2007 à 14:26
En fait, c'est faire une miniature
des images de plus de 20000x20000 que je voulais.
Et ce genre d'image ne peut être traiter en mémoire.
21 juil. 2007 à 12:57
pas [PointduFichier] pourra être de n'importe quel couleur
Mais le BMP paurra être 16bits,24bits, 16 ou 256 couleurs
21 juil. 2007 à 10:57
Très très très puissant comme api!
il y a un exmple d'utilisation sur www.ActiveVB.de
je ne me rappelle plus exactement le lien
Private Declare Function PlgBlt Lib "gdi32.dll" ( _
ByVal hdcDest As Long, _
lpPoint As POINTAPI, _
ByVal hdcSrc As Long, _
ByVal nXSrc As Long, _
ByVal nYSrc As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hbmMask As Long, _
ByVal xMask As Long, _
ByVal yMask As Long) As Long
Mais il travail directement sur le hdc.
Toi tu travail l'image en mémoire.
avec un tableau du style image(x,y).
J'ai fait une fonction pour récupérer
une zone d'image du style x,y,w,h d'un bitmap
directement dans le fichier et quelque soit le nombre de couleur.
Les images que je gère font plus de 20000x20000.
Ce genre d'image ne peut etre chargé en mémoire.
Je m'embrouillais avec ce multiple de 4 et ta formule m'a permis de terminer.
Maintenant, je voudrais une miniature de l'image.
Récupérer les point dans le fichier,
les miniaturiser et l'envoyer dans un tableau du style image(z).
je pense qu'il faut que je transforme tes boucles
For dy = 0 To (Dh - 1)
For dx = 0 To (dw - 1)
With bSrc(Sx, Sy)
If ((.r <> bMsk.r) Or (.g <> bMsk.g) Or (.b <> bMsk.b)) Then
bDst(Dmx, Dmy) = bSrc(Sx, Sy)
End If
End With
next
next
en une seule boucle
et que bDst(Dmx, Dmy) = bSrc(Sx, Sy)
devra être du style bDst(Dmz)=[PointduFichier]
[PointduFichier] pourra être de n'importe quel couleur
AS-TU UNE PISTE
20 juil. 2007 à 17:52
20 juil. 2007 à 09:47
TailleAligné = (TailleNormal + 3) And Not 3
23 févr. 2007 à 10:29
de m'aider. j'ai vraiment besoin du code.
merci
16 sept. 2006 à 22:58
Super ton prog couvre toutes mes espérances:-o
J'aurais l'occasion hélas de le tester plus longuement demain fin de journée pour cause de déplacement.
Je te remercie beaucoup pour avoir fait ce que tu as dit ce qui est rare de nos jours.
Bonne prog.
A +
16 sept. 2006 à 13:49
http://www.vbfrance.com/code.aspx?ID=39583
@+
15 sept. 2006 à 14:46
A +
15 sept. 2006 à 00:26
Hey Afyn ? tes meme pas connecté sur msn l'astico !
@+
14 sept. 2006 à 23:16
Yop
Afyn
Navedac
13 sept. 2006 à 10:38
mais pas la mémoire vidéo, nous avons ici un DIB (Device Independant Bitmap) donc stocké dans la RAM, dans un format connu, manipulable.
ne t'inquiète pas pour la taille de l'image par rapport a la resolution de l'écran, les PCs actuels sont largement capables d'avoirs 'quelques' fois la taille de l'ecran en mémoire ^^
13 sept. 2006 à 10:21
D'autre part je voudrais juste une confirmation. Ne serait-il pas plus simple d'avoir la largeur de l'image originale en multiple de 4 et récupérer ses dimensions au runtime?
Que se passera t-il alors si la taille de l'image originale est plus grande que la résolution d'écran, si je ne me suis pas trompé EB, tu manipules l'image à partir de la mémoire vidéo?
12 sept. 2006 à 21:55
Merci d'avance
12 sept. 2006 à 21:49
@+
12 sept. 2006 à 21:29
Chapeau à EBArtSoft une fois encore pour ce code.
Est-ce que l'on peut m'éclairer si je ne vois pas ce qui peut paraître évident?...:-(
TailleAligné = (TailleNormal + 3) And Not 3 je le comprends comme :
Width de l'image = (Width de l'image + 3 pixels) And Not 3
Height de l'image = (Height de l'image + 3 pixels) And Not 3
Est-ce que ceci peut être la parade au cas où Width et(ou) Height
ne sont pas multiples de 4 ou comment régler ce problème alors...
D'avance merci et bonne prog.
12 sept. 2006 à 20:21
12 sept. 2006 à 16:36
Bon alors je rectifie :
- Pour extraire l'image dans l'ide tu ouvres paint tu clique bouton droit sur la picturebox et tu fait copié dans paint tu fait clique droit puis coller puis menu -> enregistrer sous !
- Pour extraire en run time : SavePicture Picture1,"Image.bmp"
- L'image doit avoir une taille multiple de 4 ?
On parle de sa taille en X ! c'est a dire le Picture1.ScaleWidth
Pourquoi ? tout simplement par ce que l'on traite des données RGB c'est a dire 1 octet pour le rouge 1 pour le vert 1 pour le bleue ! Ces données on les exploite sous forme de tableau VB (x,y) hors VB pour une question d'optimisation exploite des données aligné sur 4 octets (usage de registre 32 bits). CE qui va ce passer si on utilise une image non aligné c'est que l'image sera decalé ! car a la fin d'un scanline ou d'une ligne si vous preferé VB va ajouté les octet manquant et donc empieté sur la ligne suivante !
Ce probleme peut facilement etre resolu en créant une image aligné dynamiquement pour obtenir la taille d'une image aligné sur 4 octet il suffit de faire l'operation suivante :
TailleAligné = (TailleNormal + 3) And Not 3
@+
12 sept. 2006 à 15:56
12 sept. 2006 à 15:47
Bon ben c'était pas ça :-(
12 sept. 2006 à 15:46
Donc ne pas prendre pour argent comptant et à confirmer !
12 sept. 2006 à 15:46
ici, on fait pointer notre tableau où il faut, c'est tout....
12 sept. 2006 à 15:44
12 sept. 2006 à 15:41
MemoryCopy ByVal VarPtrArray(bSrc), VarPtr(SA1), 4
Les bytes seraient traités 4 par 4 ?
12 sept. 2006 à 15:12
12 sept. 2006 à 15:09
Sinon c'est une source super pratique
12 sept. 2006 à 14:00
Si je me souviens bien, les fichiers frx sont constitué ainsi: [longueur1](4octets)[donnée1](longueur1)[longueur2](4octects)[donnée2](longueur2) etc...
12 sept. 2006 à 13:42
Dommage je n'ai pas d'aide il me faut toujours aller chercher sur internet, juste une petite précision, avec "GetObject Src.Picture, Len(BmpS), BmpS" comme le fait EB, la variable BmpS (de type BITMAP) contient l'image du background, il devrait avoir une API qui permette de l'enregistrer sous...
Autre chose le fichier frmMain.frx sans le frmMain.frm est-il suffisant pour exploiter son contenu? Y'a t-il une documentation en ligne pour sa codification.?
12 sept. 2006 à 13:22
selectionne l'objet voulu
selectionne la propriété Picture
et presse Ctrl + C
12 sept. 2006 à 13:17
Je pense qu'il doit avoir une API ou un petit module que vous pourriez m'écrire pour faire une sorte de enregistrer sous ... de l'image. Il faut noter que le copier/coller n'est pas possible pour le picture du form, or j'ai des forms avec des images qui m'interessent que je voulais extraire.
12 sept. 2006 à 13:11
sinon, si ton image est de type Bitmap (pas une Icon) un simple copier/coller suffit
12 sept. 2006 à 13:04
Dans le cas du picturebox "ps" de cette appli, l'image peut être extraite par copier/coller. Comment aurait-il été possible de l'avoir par programme via les fichiers frmMain.frm et frmMain.frx?
12 sept. 2006 à 11:49
Je suis en 1024 * 768 et BmpS.bmBitsPixel = 16
Si je passe en 800 * 600 ==> BmpS.bmBitsPixel = 24
Et là cela fonctionne.
12 sept. 2006 à 11:30
Puis essaie de changer de resolution
@+
12 sept. 2006 à 10:54
12 sept. 2006 à 10:39
12 sept. 2006 à 10:14
Et sans commentaires je ne pige pas grand chose. Du coup je peux pas dire d'où ça vient.
12 sept. 2006 à 07:07
12 sept. 2006 à 02:47