Faire tourner une image selon un axe calculé

Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 7 déc. 2011 à 19:55
arthur448 Messages postés 24 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 8 décembre 2011 - 9 déc. 2011 à 08:42
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

Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
8 déc. 2011 à 10:31
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
1
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
7 déc. 2011 à 22:30
Bonsoir
As tu cherché avec "rotation d'image"
il y a pas mal d'exemple
0
arthur448 Messages postés 24 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 8 décembre 2011 1
8 déc. 2011 à 08:14
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 .
-------------------------------------------------------------------------------------------------------------------------------
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
8 déc. 2011 à 08:20
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
8 déc. 2011 à 08:25
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
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
8 déc. 2011 à 08:26
lol arthur 448, tu m'as coiffé sur le fil .....
0
arthur448 Messages postés 24 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 8 décembre 2011 1
8 déc. 2011 à 08:45
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 .
-------------------------------------------------------------------------------------------------------------------------------
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
8 déc. 2011 à 08:47
ben non pas vraiment
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
8 déc. 2011 à 09:04
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
0
arthur448 Messages postés 24 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 8 décembre 2011 1
8 déc. 2011 à 09:50
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 .
-----------------------------------------------------------------------------------------------------------------------------
0
arthur448 Messages postés 24 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 8 décembre 2011 1
8 déc. 2011 à 11:15
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 .
-------------------------------------------------------------------------------------------------------------------------------
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
8 déc. 2011 à 18:50
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
0
arthur448 Messages postés 24 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 8 décembre 2011 1
9 déc. 2011 à 08:42
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 .
-------------------------------------------------------------------------------------------------------------------------------
0