Création d'une image à partir d'un composant Vb Net

dieuzorro Messages postés 21 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 14 janvier 2008 - 10 mai 2005 à 20:37
neguibserhani Messages postés 10 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 12 décembre 2005 - 21 mai 2005 à 15:31
Bonjour

Mon probléme est que je souhaite copier un composant situé sur une form dans une image pour sauver son apparence dans un fichier image. J'ai trouvé sur le net des exemples qui mon permit d'aboutir au code suivant:

Code:
,
----

Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As IntPtr, ByVal X As Integer, _
ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, _
ByVal hSrcDC As IntPtr, ByVal xSrc As Integer, ByVal ySrc As Integer, _
ByVal nSrcWidth As Integer, ByVal nSrcHeight As Integer, ByVal dwRop As Integer) As Integer

Dim buffer As Bitmap
Dim SaveTail As Size
Dim ImagTail As Size

Dim controlGraphics As Graphics = Me.Graph_CDV.CreateGraphics ' graphique form
Const SRCCOPY As Integer = &HCC0020

'*** DEFINITION DE L'IMAGE
Dim controlSize As Size = Me.Graph_CDV.ClientSize()
buffer = New Bitmap(controlSize.Width, controlSize.Height)
Dim bufferGraphics As Graphics = controlGraphics.FromImage(buffer)

Dim bufferHdc As IntPtr = bufferGraphics.GetHdc 'hdc de la form
Dim controlHdc As IntPtr = controlGraphics.GetHdc

'*** DESSINE LE FORMULAIRE DANS LA PICTURE
StretchBlt(bufferHdc, 0, 0, controlSize.Width, controlSize.Height, _
controlHdc, 0, 0, controlSize.Width, controlSize.Height, SRCCOPY)

bufferGraphics.ReleaseHdc(bufferHdc)
controlGraphics.ReleaseHdc(controlHdc)

SaveFileDialog.FileName = "Mon Image"
SaveFileDialog.Filter = "Fichier BMP (*.BMP)|*.BMP" ' Type des fichier de sauvegarde
SaveFileDialog.ShowDialog()

If DialogResult.Yes Then
buffer.Save(SaveFileDialog.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
End If

Cela fonctionne mais quand mon composant a une taille plus grande que celle de la form mon image ne conteint que la partie visible du composant le reste de l'image est noire.

Merci d'avance

1 réponse

neguibserhani Messages postés 10 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 12 décembre 2005
21 mai 2005 à 15:31
Bonjour
Tu as le choix entre 2 types de résolution de problème:
problème1: je veux que mon image ne soit pas plus grande que mon form (dans ce cas la limite est le clientsize de la form)
ou
problème2: je veux que mon image ne soit pas tronquée quelquesoit sa taille; alors c'est la form qui doit changer de taille en fonction des composants qu'elle contient

Néguib
0
Rejoignez-nous