Faire tourner une image selon un axe calculé

Signaler
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013
-
arthur448
Messages postés
24
Date d'inscription
lundi 30 mai 2011
Statut
Membre
Dernière intervention
8 décembre 2011
-
Bonsoir,

Comme un bon dessin vaut mieux qu'une mauvaise explication .......



voila donc une petite partie de mon appli

la textbox sous le button exit affiche une valeur calculée entière comprise entre 0 et 360 (unité est le degré)

Lorsque je clique sur le bouton database, la valeur de la textbox se calcule (cela fonctionne parfaitement) et je voudrais que l'image (contenue dans une picturebox) pivote de la valeur en degrés de la textbox

les chiffres en rouge sont le repère. Ici, l'image a une rotation de 0 degrés

exemple : ma valeur de textbox = 90 ferait tourner mon image d'un quart de tour vers le haut de manière à aligner le 0 sur le 90

j'ai cherche mais j'avoue ne pas y être arrivé du tout ( a part mettre 360 images décalées de 1 degré et jouer sur les .visible ).

A vrai dire, je ne vois même pas comment aborder le sujet

Merci de vos conseils

13 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
47
Bonsoir
As tu cherché avec "rotation d'image"
il y a pas mal d'exemple
Messages postés
24
Date d'inscription
lundi 30 mai 2011
Statut
Membre
Dernière intervention
8 décembre 2011
1
salut j'ai trouver sa sur codes sources
bonne prog

http://www.vbfrance.com/codes/ROTATION-IMAGE-SON-CENTRE_33250.aspx



-------------------------------------------------------------------------------------------------------------------------------
Si ma réponse te convient ou ta aider dans ta quête de la programmation accepte sans plus tarder .
-------------------------------------------------------------------------------------------------------------------------------
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

Bonsoir ShayW

Oui j'ai cherché
dans un premier temps, il me faudrait avoir une picturebox ronde histoire de ne pas faire depasser les angles sur le log quand l'image n'est pas axée.

Ensuite, j'ai vu des possibilités avec System.Drawing et System.Drawing2D mais j'avoue ne pas bien comprendre ce qu'il faut faire exactement. En adaptant, j'ai mis (mon image ayant le nom image1 et la picturebox la contenant pictureboximg1) :

Imports System.Drawing.Drawing2D
Public Class visiondeloin
Private angleRotation As Integer
Private bmp As Bitmap

Public Sub New()
 
' Cet appel est requis par le Concepteur Windows Form.
  InitializeComponent()
 
' initialisation quelconque après l'appel InitializeComponent().
'un picbox
Me.PictureBoximg1.Dock = DockStyle.Fill
'un trackbar
Me.TrackBarimg1.Dock = DockStyle.Left
 
Me.PictureBoximg1.Image = Nothing
'pick image from resource 
bmp = My.Resources.image1
 
Me.TrackBarimg1.Minimum = 0
Me.TrackBarimg1.Maximum = 360
Me.TrackBarimg1.SmallChange = 1
Me.TrackBarimg1.LargeChange = 5
 
'initialise l'angle de rotation
 
Me.angleRotation = 15
Me.TrackBar1.Value = Me.angleRotation
 
End Sub
  
Private Sub Pictureboximg1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBoximg1.Paint
If bmp Is Nothing Then Return
 
 		Dim g As Graphics = e.Graphics
Dim myMatrix As Matrix = New Matrix
g.PageUnit = GraphicsUnit.Pixel

               'calcule le centre de rotation 
Dim centerBmp As Point = New Point(bmp.Width / 2, bmp.Height / 2)
myMatrix.RotateAt(Me.TrackBar1.Value, centerBmp)
 
g.Transform = myMatrix
g.DrawImage(bmp, 0, 0)
 
End Sub
 
Private Sub TrackBarimg1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBarimg1.ValueChanged
Me.PictureBox1.Invalidate()
End Sub
...
.
.


mais je ne vois rien tourner ce qui ne m'etonne pas car je ne trouve aucune reference a la valeur contenue dans le textbox qui est cencé faire tourner l'image de sa valeur
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

j'ai aussi trouve une source "ROTATION D'UNE IMAGE EN SON CENTRE" ici même, je teste mais pour l'instant cela ne fonctionne pas car encore une fois, je n'ai pas de reference a ma textbox qui donne l'angle de rotation
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

lol arthur 448, tu m'as coiffé sur le fil .....
Messages postés
24
Date d'inscription
lundi 30 mai 2011
Statut
Membre
Dernière intervention
8 décembre 2011
1
tu as résolut ton problème ?

-------------------------------------------------------------------------------------------------------------------------------
Si ma réponse te convient ou ta aider dans ta quête de la programmation accepte sans plus tarder .
-------------------------------------------------------------------------------------------------------------------------------
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

ben non pas vraiment
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

En fait comme je le disais, dans les deux cas precites, on utilise un trackbar pour faire tourner l'image, alors que moi, je veux simplement la faire tourner d'une valeur en degres affichée
Messages postés
24
Date d'inscription
lundi 30 mai 2011
Statut
Membre
Dernière intervention
8 décembre 2011
1
salut / re j'ai trouver exactement ce qu’il te faut

matrix.rotateAt(angle, pointCentreRotation)

soit :

Imports System.Drawing.Drawing2D
 
Public Class Form1
Private angleRotation As Integer
Private bmp As Bitmap
 
Public Sub New()
 
' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
 
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
'un picbox
Me.PictureBox1.Dock = DockStyle.Fill
'un trackbar
Me.TrackBar1.Dock = DockStyle.Left
 
Me.PictureBox1.Image = Nothing
'pick image from resource 
bmp = My.Resources.Nenuphars
 
Me.TrackBar1.Minimum = 0
Me.TrackBar1.Maximum = 360
Me.TrackBar1.SmallChange = 1
Me.TrackBar1.LargeChange = 5
 
'initialise l'angle de rotation
 
Me.angleRotation = 15
Me.TrackBar1.Value = Me.angleRotation
 
End Sub
 
 
 
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
If bmp Is Nothing Then Return
 
 
Dim g As Graphics = e.Graphics
Dim myMatrix As Matrix = New Matrix
g.PageUnit = GraphicsUnit.Pixel
'calcule le centre de rotation 
Dim centerBmp As Point = New Point(bmp.Width / 2, bmp.Height / 2)
myMatrix.RotateAt(Me.TrackBar1.Value, centerBmp)
 
g.Transform = myMatrix
g.DrawImage(bmp, 0, 0)
 
End Sub
 
Private Sub TrackBar1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.ValueChanged
Me.PictureBox1.Invalidate()
End Sub
 
 
End Class


voila bonne prog

-----------------------------------------------------------------------------------------------------------------------------
Si ma réponse te convient ou ta aider dans ta quête de la programmation accepte sans plus tarder .
-----------------------------------------------------------------------------------------------------------------------------
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

Merci arthur, as tu remarque que c'est exactement le code que j'ai mis dans mon premier topic ????

je rencontre un souci avec
'pick image from resource 
bmp = My.Resources.monimage


mon image a moi est un jpeg insere dans un picturebox
Merci de ton aide
Messages postés
24
Date d'inscription
lundi 30 mai 2011
Statut
Membre
Dernière intervention
8 décembre 2011
1
re mec

alors atu essayé de rempplacer cela

bmp = My.Resources.monimage


par cela

jpeg = My.Resources.monimage



sinon essaye de changer le format de ton image sa serais le plus simple
en espérant t'aider

-------------------------------------------------------------------------------------------------------------------------------
Si ma réponse te convient ou ta aider dans ta quête de la programmation accepte sans plus tarder .
-------------------------------------------------------------------------------------------------------------------------------
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

Salut

Ne peut pas marcher dans tous les cas puisque bmp est declare as bitmap
donc sauf erreur je peux l'appeler comme je veux, cela ne modifiera pas la declaration

merci quand même pour ton soutien
Messages postés
24
Date d'inscription
lundi 30 mai 2011
Statut
Membre
Dernière intervention
8 décembre 2011
1
Salut bas change la déclaration
sa changera pas le code de toute façon




-------------------------------------------------------------------------------------------------------------------------------
Si ma réponse te convient ou ta aider dans ta quête de la programmation accepte sans plus tarder .
-------------------------------------------------------------------------------------------------------------------------------