Copier une parti de l'écran

Résolu
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 3 nov. 2010 à 23:36
 Utilisateur anonyme - 4 nov. 2010 à 20:17
Bonsoir
Comment copier une parti de l'écran dans une
image

merci

3 réponses

Utilisateur anonyme
4 nov. 2010 à 20:17
Re,
Pourquoi pas si ça te convient comme ca mais bon.
Par contre supprime la sauvegarde sur le disque :
b.Save("test.png", Imaging.ImageFormat.Png)

Et à la place charge une copie du bitmap dans ton background :
framescreen.BackgroundImage = CType(b.Clone,Image)

Tu évitera un double accès (écriture, lecture) au disque de cette façon.
A bientôt
3
Utilisateur anonyme
4 nov. 2010 à 14:37
Salut,
Comme ta question est très vague (copie de l'application incluse?) voici une première méthode en attendant tes précisions :

'nouveau bitmap
Dim b As New Bitmap(300, 300)
'objet de dessin
Dim g As Graphics = Graphics.FromImage(b)
'copie de l'écran sur le bitmap
'c'est ici qu'on définit :
'   le coin supérieur gauche depuis lequel copier
'   le coin supérieur gauche de destination dans le bitmap (en général 0-0)
'   la taille de la zone à copier
g.CopyFromScreen(New Point(100, 200), New Point(0, 0), New Size(300, 300))
'sauvegarde de l'image
b.Save("test.png", Imaging.ImageFormat.Png)
'libération des ressources
g.Dispose()
b.Dispose()


J'attends de voir pour la suite selon ta réponse.
A+
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
4 nov. 2010 à 19:51
Bonsoir
Voila
Ce que j'essaye c'est de copier une parti de l'écran pour la mettre dans un picturebox
la parti à copier est de la meme grandeur du
picturebox
j'ai testé ton code en ajoutant
ça marche

Private Sub copypartscreen()
        framescreen.Visible = False
        framescreen.Width = 300
        framescreen.Height = 300
        framescreen.Left = 100
        framescreen.Top = 100
        Dim b As New Bitmap(framescreen.Width, framescreen.Height)
        Dim g As Graphics = Graphics.FromImage(b)
        g.CopyFromScreen(New Point(100, 100), New Point(0, 0), New Size(framescreen.Height, framescreen.Width))
        b.Save("test.png", Imaging.ImageFormat.Png)
        framescreen.BackgroundImage = Image.FromFile(Application.StartupPath & "\test.png")
        framescreen.Visible = True
        g.Dispose()
        b.Dispose()
        flagsee = False
    End Sub
Private Sub framescreen_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles framescreen.Paint
        If flagsee Then
            copypartscreen()
        End If
'about is a command button 
Private Sub about_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles about.Click
        framescreen.Visible = True
        flagsee = True
        End Sub



en fait c'est pour faire le meme effet qu'un picturebox transparent je copie la zone d'écran
qui soi disant etre derrière le picturebox
j'ai vu toute une méthode pour faire la
transparence j'ai pas trop compris

http://www.codeproject.com/kb/combobox/TransListBox.aspx

merci
0
Rejoignez-nous