Insérer Image, sauvegarder image, apercu image

Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 15 juil. 2009 à 00:04
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 15 juil. 2009 à 05:43
Salut !

Ce code est a améliorer grâce à tous ceux qui peuvent m'aider. Ce n'est
pas une source fini mais qui le sera grâce à votre aide à tous.

Je demande a tous ceux qui peuvent de bien vouloir m'aider.

Voici l'image de l'idée à reproduire et améliorer :


http://www.monsterup.com/image.php?url=upload/1247579121483.png

et voici le lien de téléchargement :


Voici donc quoi faire :

1-
rentre l'image cadrée dans la miniature avec un arrière plan noir. Si
l'image est un long rectangle, alors il aura deux bandes noir une au
dessus de l'image et une en dessous.

2- L'image vue a 100% ne
s'affiche pas au complet quand elle est grande. Elle est coupée a la
fin du coté droit et a la fin du bas. Et quand elle est petite (en
taille d'origine) elle n'est pas centrée dans le cadre de l'image mais
au coin haut gauche.

3- Le bouton Parcourir va chercher une
image. Malheureusement si il y a plus qu'une image dans le dossier, je
ne peux pas sélectionner l'image souhaité, il m'affiche toujours la
première image.

4- Je ne sais pas sauvegarder dans une base de
données Access. Ce qui est obligatoire pour récupérer l'image quand je
veux la faire afficher au load du formulaire.

5- Au load, quand
il n'y a pas d'image, la zone des image est de couleur blanche. Une
fois que je sauvegarde l'image, ferme le logiciel et le réouvre,
l'image sauvegardée précédemment doit s'afficher.

6- Une copie
de l'image choisie doit se faire dans le dossier de la source, la
sauvegarde se fera donc après la copie de l'image et la récupération se
fera sur la copie de l'image.

Voilà les 6 points à effectuer.
Si
quelqu'un peut m'aider, je lui serrai vraiment reconnaissant. J'ai
fouillé partout sur vbfrance mais cette source n'existe pas, pourtant
pour l'intégrer dans un logiciel de comptabilité, je ne pense pas que
c'est une mauvaise idée bien au contraire.

Merci pour votre aide à tous !




----------
OS        : Windows XP SP3
Platforme : VB 6.0 + SP6
Ok VB6.0 c'est pas net !

2 réponses

Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
15 juil. 2009 à 00:07
Lien de téléchargement :

http://www.al-jabr.info/Ma_Societe.zip
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 juil. 2009 à 05:43
une partie de la réponse par ce code :



<hr />
'    ETIRER UNE IMAGE PROPORTIONNELLEMENT, AU CENTRE D'UN CONTRÔLE, EN
LIMITANT À UNE TAILLE MAXIMUM
'    http://www.codyx.org/snippet_etirer-image-proportionnellement-centre-controle-limitant-taille-maximum_709.aspx#2092
'    Posté par [ 401740 PCPT ] le 13/10/2008
<hr />




Sub 
Stretch(
ByRef 
oDest 
As Object
, sPath 
As String
,
Optional ByVal
lMaxWidth
As Long
=
0
,
Optional
ByVal
lMaxHeigh



t
As Long

=




0
)


'oDest      control avec hDC
classique (propriétés hDC, Width, Height, ScaleX-Y, PaintPicture), doit être en
twips


'lMaxWidth  largeur max, celle du control
par défaut


'lMaxHeight hauteur max, celle du
control par défaut

    Dim lOldWidth   As Long
    Dim lOldHeight  As Long
    Dim lNewWidth   As Long
    Dim lNewHeight  As Long
    Dim cRatio      As Currency
    Dim oStd        As New StdPicture
    
    
'  
régule la taille MAX par défaut
    If (lMaxWidth <= 0) Or (lMaxWidth > oDest.Width)
Then lMaxWidth =
oDest.Width
    If (lMaxHeight <= 0) Or (lMaxHeight > oDest.Height) Then
lMaxHeight = oDest.Height
'   charge l'image et récupère sa taille
    Set oStd = LoadPicture(sPath)
    lOldWidth = oDest.ScaleX(oStd.Width, vbHimetric,
vbTwips)
    lOldHeight = oDest.ScaleY(oStd.Height, vbHimetric,
vbTwips)
'   orientation, on va étirer l'image au
plus possible en touchant la taille max autorisée avec le bord du type d'image.
l'autre côté peut tout de même dépasser
    If lOldWidth > lOldHeight Then
'       image réelle :
paysage
        lNewWidth = lMaxWidth
        cRatio = lMaxWidth / lOldWidth
        lNewHeight = lOldHeight * cRatio
        If lNewHeight > lMaxHeight Then
'           la hauteur dépasse,
même manip
            cRatio = lMaxHeight / lNewHeight
            lNewHeight = lMaxHeight
            lNewWidth = lNewWidth * cRatio
        End If
    Else
'       image réelle : portrait
        lNewHeight = lMaxHeight
        cRatio = lMaxHeight / lOldHeight
        lNewWidth = lOldWidth * cRatio
        If lNewWidth > lMaxWidth Then
'           la largeur dépasse,
même manip
            cRatio = lMaxWidth / lNewWidth
            lNewWidth = lMaxWidth
            lNewHeight = lNewHeight * cRatio
        End If
    End If
'   on dessine le rendu centré (NB : l'API StretchBlt donne une
trop mauvaise qualité, autant passer par la méthode accessible par le
contrôle)
    oDest.PaintPicture oStd, (oDest.Width - lNewWidth) / 2, (oDest.Height - lNewHeight) /
2, lNewWidth, lNewHeight,
0, 0, lOldWidth, lOldHeight,
vbSrcCopy
    Set oStd = Nothing
End Sub

'
===================
' EXEMPLE
D'UTILISATION
'
===================
'
Private Sub Command1_Click()
'   par exemple sur
une picturebox sans bordure, avec l'autoredraw
    Picture1.BorderStyle = vbBSNone
    Picture1.AutoRedraw = True
    Picture1.BackColor = vbRed

'  
nettoyer si ncéssaire
    Picture1.Cls
'   Picture1 : on étire
l'image en gardant la proportion, sur la taille TOTALE de la
box
    Call Stretch(Picture1, "C:\image1.jpg")
'   Picture1 (aussi !!) : on étire l'image en gardant la
proportion, sur la MOITIé de la box (toujours en son centre)
    Call Stretch(Picture1, "C:\image1.jpg", Picture1.Width / 2, Picture1.Height / 2)
End Sub




'----------------------------------------------------------------



'Remarques :


'ce code permet d'étirer une image au centre d'un contrôle en
conservant les proportions d'origines.
'lMaxWidth et lMaxHeight étant
optionnels, vous pouvez également jouer pour, par exemple, dessiner ensuite une
bordure sur votre contrôle sans mordre sur le rendu.









pour le reste, presque tout trouve réponse aussi sur codyx.org
++

<hr size ="2" width="100%" />
0
Rejoignez-nous