Visual basic 2010 express probleme "DrawImage" avec scrollbars...

nashteamaaz Messages postés 1 Date d'inscription lundi 18 juillet 2011 Statut Membre Dernière intervention 6 juillet 2012 - 6 juil. 2012 à 22:08
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 7 juil. 2012 à 00:17
bonjour ,
je cherche un peu d'aide pour un probleme auquel je coince:(:(

j'ai une picturebox1 avec un fond d'ecran , en autosize dans une form avec scrollbar .

Une autre picturebox2 avec un logo que je fais glisser sur la picturebox1 puis avec un "DrawImage" je "colle" la picturebox2 sur la 1 .
Ca fonctionne tres bien sur un petit fond quand les scrollbars ne sont pas actif mais des que je mets un fond assez grand et que les scrollbars de la form s'activent , si je descends ma picturebox2 plus bas en me servant des scrollbars , le "collage" ne se fait pas a la location de la picturebox2...
je crois avoir lu que les scrollbars ne servent pas aux objets insérés dans la form (ou picturebox) , et que le probleme viendrai de ca ...


comment puis je contourner cela ? une idee ?
loin d'etre un pro dans ce domaine , et apres avoir chercher pas mal , impossible de trouver :)
merci de votre aide.
ci joint le code source de mon projet :

_____________________________________________________________________________________________________________________

Public Class Form1
Dim Graph As Graphics
Dim Drawbitmap As Bitmap
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Integer, ByVal wMsg As Integer, _
ByVal wParam As Integer, ByVal lParam As String) As Integer
Private Declare Sub ReleaseCapture Lib "user32" ()
Public WithEvents pictubox1 As PictureBox

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim dlg As New SaveFileDialog
dlg.Filter = "Bitmap|*.bmp"
If dlg.ShowDialog = Windows.Forms.DialogResult.OK Then
PictureBox1.Image.Save(dlg.FileName)
End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim openFD As New OpenFileDialog
openFD.Title = "Sélectionnez le fichier que vous souhaitez ouvrir."
DialogResult = openFD.ShowDialog
If DialogResult = Windows.Forms.DialogResult.OK Then
PictureBox3.ImageLocation = (openFD.FileName)
PictureBox2.ImageLocation = (openFD.FileName)
PictureBox2.Height = PictureBox3.Image.Height
PictureBox2.Width = PictureBox3.Image.Width
End If
End Sub
Private Sub PictureBox2_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseMove
Dim lHwnd As Int32
lHwnd = PictureBox2.Handle
If lHwnd = 0 Then Exit Sub
ReleaseCapture()
SendMessage(lHwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End Sub


Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
Dim lHwnd As Int32
lHwnd = Me.Handle
If lHwnd = 0 Then Exit Sub
ReleaseCapture()
SendMessage(lHwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End Sub

Dim g As Graphics
Private Sub PictureBox2_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseUp
g = Graphics.FromImage(PictureBox1.Image)
g.DrawImage(PictureBox2.Image, New Point(PictureBox2.Location.X, PictureBox2.Location.Y - 128))
PictureBox2.Location = New Point(141, 14)
' Graph.DrawImage(PictureBox2.Image, PictureBox2.Location)
PictureBox1.Refresh()
End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
End Class

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 juil. 2012 à 00:17
Bonjour,

Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

Sinon, je n'ai jamais été confronté au problème.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Rejoignez-nous