Redimensionner une image pour l'imprimer

Blackbird01 Messages postés 26 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 1 juin 2006 - 20 juin 2004 à 18:10
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008 - 20 juin 2004 à 20:28
Bonjour, je voudrais créer un programme pour imprimer les photo de mon appareil photo numérique. J'ai donc fait un .exe, avec un bouton ouvrir qui ouvre dans une image la photo souhaitée mais je voudrais que mon programme la redimensionne en 102 * 152 (taille du papier photo). Comment puis-je faire ?

5 réponses

cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
20 juin 2004 à 20:00
essais peut être avec l'api strechblt pour le redim

bonne prog
liquide
0
Blackbird01 Messages postés 26 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 1 juin 2006
20 juin 2004 à 20:02
Je connais pas les API windows :(
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
20 juin 2004 à 20:11
http://www.activevb.de/rubriken/apiviewer/index-apiviewer.html

ca c'est le lien vers un "visualiseur" d'api a telecharger et gratuit

ensuite quand tu as reussis a ouvrir le fichier contenant les declarations d'api, tu recherche celle ci

ensuite tu fait un copier coller, soit en private , c'est a dire dans ta form, soit un public, dans un module par exemple.
sur le bouton qui va servir a faire la nouvelle lecture, tu declare un call strechblt (......)
la voici :
(public declare ou private declare)
Private Declare Function StretchBlt Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

il te faut absolument connaitre le hdc de l'objet, alors il est preferable d'utiliser des picturebox.

hdc: hdc de destination
x : coordonnée en x en general 0
y : idem
nwidth : largeur
nheight : hauteur
hsrcDc : hdc de la source
et pour le reste on reprend c'est la meme definition que pour la destination.

j'espere que ca convient, bonne prog
liquide
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
20 juin 2004 à 20:25
j'ai un petit exemple :
il utilise 2 picturebox et un bouton

tu mets une image dans la picture1.picture

Private Declare Function StretchBlt Lib "gdi32.dll" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long

Private Const SRCCOPY As Long = &HCC0020

Private Sub Command1_Click()
Dim SrcDC1 As Long
Dim SrcObj1 As Long
    
    SrcDC1 = CreateCompatibleDC(Picture1.hDC)
    SrcObj1 = SelectObject(SrcDC1, Picture1.Picture)

        Call StretchBlt(Picture2.hDC, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeight, SrcDC1, 0, 0, Picture1.Width, Picture1.Height, SRCCOPY)
End Sub

liquide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
20 juin 2004 à 20:28
pardon apres il faut "deleter"
donc dans la section au meme titre que les api:
Private Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long
Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long

apres l'appel du stretchblt et avant le "End":
DeleteDC SrcDC1
DeleteObject SrcObj1

encore dsl pour ne pas avoir completé totalement le code
bonne prog
liquide
0
Rejoignez-nous