OVH Cloud OVH Cloud

Découper une image

7 réponses
Avatar
Daniel AUBRY
Bonsoir à tous,
suite à d'infructueuses recherches sur le net je me demande si
quelqu'un saurait recadrer une image avec vb6.
Par exemple : on charge une image dans un PictureBox, à l'aide
de la souris on trace sur cette image un rectangle, on fait un
double-clic et l'image est recadrée.
Il n'y a plus qu'a sauver.
Pour la sauvegarde, je sais. Mais pour le reste ..........

Dany,

mail@daniel-aubry.com
www.daniel-aubry.com

7 réponses

Avatar
ng
Salut,


Bonsoir à tous,
suite à d'infructueuses recherches sur le net je me demande si
quelqu'un saurait recadrer une image avec vb6.
Par exemple : on charge une image dans un PictureBox, à l'aide
de la souris on trace sur cette image un rectangle, on fait un
double-clic et l'image est recadrée.
Il n'y a plus qu'a sauver.
Pour la sauvegarde, je sais. Mais pour le reste ..........



Regarde du coté de PaintPicture.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Avatar
G.M.
ciao

http://www.magia.it/Alfa/rubber/rubber.htm


---------------
"Daniel AUBRY" ha scritto nel messaggio
news:427e8352$0$320$
Bonsoir à tous,
suite à d'infructueuses recherches sur le net je me demande si
quelqu'un saurait recadrer une image avec vb6.
Par exemple : on charge une image dans un PictureBox, à l'aide
de la souris on trace sur cette image un rectangle, on fait un
double-clic et l'image est recadrée.
Il n'y a plus qu'a sauver.
Pour la sauvegarde, je sais. Mais pour le reste ..........

Dany,


www.daniel-aubry.com



Avatar
Daniel AUBRY
Salut,
mon soucis est plus le repérage de la partie à découper.
La manipulation d' image dans paintpicture ne me pose pas de problème.
J'aurais préféré du code à une dll.

Merci quand même.

dany


"G.M." a écrit dans le message de news:
5rwfe.873112$
ciao

http://www.magia.it/Alfa/rubber/rubber.htm


---------------
"Daniel AUBRY" ha scritto nel messaggio
news:427e8352$0$320$
Bonsoir à tous,
suite à d'infructueuses recherches sur le net je me demande si
quelqu'un saurait recadrer une image avec vb6.
Par exemple : on charge une image dans un PictureBox, à l'aide
de la souris on trace sur cette image un rectangle, on fait un
double-clic et l'image est recadrée.
Il n'y a plus qu'a sauver.
Pour la sauvegarde, je sais. Mais pour le reste ..........

Dany,


www.daniel-aubry.com







Avatar
Zoury
Salut Daniel ! :O)

Jète un oeil sur ce code, il permet de montré un rectangle de sélection :
http://groups.google.com/groups?hl=fr&lr=&selm=eXHrb3DWCHA.2328%40tkmsftngp09&rnum=8

Les variables StartX, StartY, EndX et EndY conservent les coordonnées de la
sélection, tu devras probablement modifier les déclarations afin de les
rendre accessible au module (Private). Il ne reste plus qu'à adapter le code
à un PictureBox et appelé PaintPicture.

--
Cordialement
Yanick
MVP pour Visual Basic

"Daniel AUBRY" a écrit dans le message de
news:427ee7e3$0$2458$
Salut,
mon soucis est plus le repérage de la partie à découper.
La manipulation d' image dans paintpicture ne me pose pas de problème.
J'aurais préféré du code à une dll.

Merci quand même.

dany


"G.M." a écrit dans le message de news:
5rwfe.873112$
> ciao
>
> http://www.magia.it/Alfa/rubber/rubber.htm
>
>
> ---------------
> "Daniel AUBRY" ha scritto nel messaggio
> news:427e8352$0$320$
>> Bonsoir à tous,
>> suite à d'infructueuses recherches sur le net je me demande si
>> quelqu'un saurait recadrer une image avec vb6.
>> Par exemple : on charge une image dans un PictureBox, à l'aide
>> de la souris on trace sur cette image un rectangle, on fait un
>> double-clic et l'image est recadrée.
>> Il n'y a plus qu'a sauver.
>> Pour la sauvegarde, je sais. Mais pour le reste ..........
>>
>> Dany,
>>
>>
>> www.daniel-aubry.com
>>
>
>




Avatar
Jean-Marc
"Daniel AUBRY" a écrit dans le message de
news:427ee7e3$0$2458$
Salut,
mon soucis est plus le repérage de la partie à découper.
La manipulation d' image dans paintpicture ne me pose pas de problème.
J'aurais préféré du code à une dll.



Hello,

pour faire ce genre de chose, un moyen simple est d'utiliser un chape
(rectangulaire).
1/ créer un shape dans une picturebox
2/ mettre les shape en invisible
3/ mettre une image dans le picture
4/ voici comment on peut faire pour définir une zone rectangulaire,
en jouant avec le shape.

Principe:
- sur mousedown, on initialise le coin supérieur gauche du shape,
et on met height et width à 0 (et on met le shape visible)
- sur mousemove et tant que le bouton reste enfoncé on redimensionne
le shape
- sur mouseup, on a tout: La sélection correspond au shape.
- on récupère les éléments du shape et on le remet en invisible

Voici le code pour faire cela:

'
' Il faut une picture box (Picture1)
' Un Shape (rectangle) que tu dessines DANS Picture1
'

Option Explicit

Dim G_SELECT_TOP As Single
Dim G_SELECT_LEFT As Single
Dim G_SELECT_HEIGHT As Single
Dim G_SELECT_WIDTH As Single

Private Sub Form_Load()
Shape1.BorderStyle = 3 ' dot
Shape1.Visible = False
Shape1.Height = 1
Shape1.Width = 1
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Shape1.Top = Y
Shape1.Left = X
Shape1.Height = 1
Shape1.Width = 1
Shape1.Visible = True
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Dim dx As Single
Dim dy As Single

If Button = 1 Then ' left click
dy = Y - Shape1.Top
If dy < 0 Then
dy = 0
End If
Shape1.Height = dy
dx = X - Shape1.Left
If dx < 0 Then
dx = 0
End If
Shape1.Width = dx
End If
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
G_SELECT_TOP = Shape1.Top
G_SELECT_LEFT = Shape1.Left
G_SELECT_HEIGHT = Shape1.Height
G_SELECT_WIDTH = Shape1.Width
Shape1.Visible = False
Call DisplaySelect
End Sub

Private Sub DisplaySelect()
Dim x1 As Single, x2 As Single
Dim y1 As Single, y2 As Single
Dim s As String

Call GetLatestSelection(x1, y1, x2, y2)
s = "Coords : x1 = " & x1 & " y1 = " & y1
s = s & " x2 = " & x2 & " y2 = " & y2
MsgBox s
End Sub

Private Sub GetLatestSelection(ByRef x1 As Single, ByRef y1 As Single, _
ByRef x2 As Single, ByRef y2 As Single)
x1 = G_SELECT_LEFT
y1 = G_SELECT_TOP
x2 = G_SELECT_LEFT + G_SELECT_WIDTH
y2 = G_SELECT_TOP + G_SELECT_HEIGHT
End Sub
'
' Et voila

Je pense que c'est une bonne base pour ce que tu veux faire.


--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
http://membres.lycos.fr/jeanmarcn/trollthemup.htm
Avatar
Daniel AUBRY
Ok, merci beaucoup.
Je teste tout cela dès demain.

Dany

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news: u1U$
Salut Daniel ! :O)

Jète un oeil sur ce code, il permet de montré un rectangle de sélection :
http://groups.google.com/groups?hl=fr&lr=&selm=eXHrb3DWCHA.2328%40tkmsftngp09&rnum=8

Les variables StartX, StartY, EndX et EndY conservent les coordonnées de
la
sélection, tu devras probablement modifier les déclarations afin de les
rendre accessible au module (Private). Il ne reste plus qu'à adapter le
code
à un PictureBox et appelé PaintPicture.

--
Cordialement
Yanick
MVP pour Visual Basic

"Daniel AUBRY" a écrit dans le message de
news:427ee7e3$0$2458$
Salut,
mon soucis est plus le repérage de la partie à découper.
La manipulation d' image dans paintpicture ne me pose pas de problème.
J'aurais préféré du code à une dll.

Merci quand même.

dany


"G.M." a écrit dans le message de news:
5rwfe.873112$
> ciao
>
> http://www.magia.it/Alfa/rubber/rubber.htm
>
>
> ---------------
> "Daniel AUBRY" ha scritto nel messaggio
> news:427e8352$0$320$
>> Bonsoir à tous,
>> suite à d'infructueuses recherches sur le net je me demande si
>> quelqu'un saurait recadrer une image avec vb6.
>> Par exemple : on charge une image dans un PictureBox, à l'aide
>> de la souris on trace sur cette image un rectangle, on fait un
>> double-clic et l'image est recadrée.
>> Il n'y a plus qu'a sauver.
>> Pour la sauvegarde, je sais. Mais pour le reste ..........
>>
>> Dany,
>>
>>
>> www.daniel-aubry.com
>>
>
>








Avatar
Daniel AUBRY
Ok, merci beaucoup.
Je teste tout cela dès demain.

Dany

"Jean-Marc" a écrit dans le message de news:
427fadc8$0$30476$
"Daniel AUBRY" a écrit dans le message de
news:427ee7e3$0$2458$
Salut,
mon soucis est plus le repérage de la partie à découper.
La manipulation d' image dans paintpicture ne me pose pas de problème.
J'aurais préféré du code à une dll.



Hello,

pour faire ce genre de chose, un moyen simple est d'utiliser un chape
(rectangulaire).
1/ créer un shape dans une picturebox
2/ mettre les shape en invisible
3/ mettre une image dans le picture
4/ voici comment on peut faire pour définir une zone rectangulaire,
en jouant avec le shape.

Principe:
- sur mousedown, on initialise le coin supérieur gauche du shape,
et on met height et width à 0 (et on met le shape visible)
- sur mousemove et tant que le bouton reste enfoncé on redimensionne
le shape
- sur mouseup, on a tout: La sélection correspond au shape.
- on récupère les éléments du shape et on le remet en invisible

Voici le code pour faire cela:

'
' Il faut une picture box (Picture1)
' Un Shape (rectangle) que tu dessines DANS Picture1
'

Option Explicit

Dim G_SELECT_TOP As Single
Dim G_SELECT_LEFT As Single
Dim G_SELECT_HEIGHT As Single
Dim G_SELECT_WIDTH As Single

Private Sub Form_Load()
Shape1.BorderStyle = 3 ' dot
Shape1.Visible = False
Shape1.Height = 1
Shape1.Width = 1
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Shape1.Top = Y
Shape1.Left = X
Shape1.Height = 1
Shape1.Width = 1
Shape1.Visible = True
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Dim dx As Single
Dim dy As Single

If Button = 1 Then ' left click
dy = Y - Shape1.Top
If dy < 0 Then
dy = 0
End If
Shape1.Height = dy
dx = X - Shape1.Left
If dx < 0 Then
dx = 0
End If
Shape1.Width = dx
End If
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
G_SELECT_TOP = Shape1.Top
G_SELECT_LEFT = Shape1.Left
G_SELECT_HEIGHT = Shape1.Height
G_SELECT_WIDTH = Shape1.Width
Shape1.Visible = False
Call DisplaySelect
End Sub

Private Sub DisplaySelect()
Dim x1 As Single, x2 As Single
Dim y1 As Single, y2 As Single
Dim s As String

Call GetLatestSelection(x1, y1, x2, y2)
s = "Coords : x1 = " & x1 & " y1 = " & y1
s = s & " x2 = " & x2 & " y2 = " & y2
MsgBox s
End Sub

Private Sub GetLatestSelection(ByRef x1 As Single, ByRef y1 As Single, _
ByRef x2 As Single, ByRef y2 As Single)
x1 = G_SELECT_LEFT
y1 = G_SELECT_TOP
x2 = G_SELECT_LEFT + G_SELECT_WIDTH
y2 = G_SELECT_TOP + G_SELECT_HEIGHT
End Sub
'
' Et voila

Je pense que c'est une bonne base pour ce que tu veux faire.


--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
http://membres.lycos.fr/jeanmarcn/trollthemup.htm