Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
13 oct. 2006 à 11:21
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 2012
-
28 juin 2011 à 12:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 28 juin 2011 à 12:51
Re,
Pas de réponse !! donc je m'y suis remis et finalement cela n'a pas été difficile.
A toutes fins utiles.. la fonction qui calcul le rectangle pour inscrire l'image.
w = la largeur de l'image et h la hauteur.
Private Type LaHa
L As Integer
H As Integer
End Type
Dim Retour As LaHa
Sub Rapport(ByVal w As Long, ByVal H As Long, Angle As Single)
Dim nAngle As Single
Dim rAngle As Single
Const Pi = 3.141593
Const Rad = Pi / 180
'Réduit l'angle à 90° si plus grand
If Angle = 360 Then
nAngle = 0
ElseIf Angle > 179 And Angle < 270 Then
nAngle = 90 - (270 - Angle)
Else
nAngle = IIf(Angle < 91, Angle, 90 - (Angle - (Int(Angle / 90) * 90)))
End If
'Traduit degrés en radiant
rAngle = Rad * nAngle
'retourne la largeur à donner au conteneur
Retour.L = Arrondi(((w * Cos(rAngle)) + (H * Sin(rAngle))), 0)
'retourne la hauteur à donner au conteneur
Retour.H = Arrondi(((H * Cos(rAngle)) + (w * Sin(rAngle))), 0)
End Sub
Public Function Arrondi(ByVal Nombre, ByVal Decimales)
Arrondi = Int(Nombre * 10 ^ Decimales + 1 / 2) / 10 ^ Decimales
End Function
A+
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 24 juin 2011 à 13:50
Bonjour tous,
> Mistern : voir ce snippet http://www.codyx.org/snippet_conversion-images-bmp-jpg-png-avec-gdi_160.aspx > misterN : tu écrit, au début de ta modif..
'-- pour information un peu de trigo basique...
N'y aurait-il pas moyen de supprimer le "basique...", je m'explique, dans ton approche le calcul se fait pour avoir la possibilité d'inscrire l'image dans le "Gabarit" quel que soit l'angle de rotation.
J'ai étudié la trigono mais il y a tellement longtemps et je ne retrouve plus mes bouquins et j'aimerais faire en sorte que...
En un : l'image s'inscrire entièrement (le plus grand possible) dans le gabarit.
En deux : le gabarit s'adapterait à l'image en modifiant soit la hauteur soit la largeur pour qu'en finale les 4 coins de l'image touche les 4 côtés du gabarit.
Je sais qu'il faut employer Sinus et Cosinus mais je ne sais plus comment.
A l'occasion.. !
Merci d'avance.
A+
(10)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 8 juil. 2010 à 19:20
yep, GDI+ permet ces sauvegardes
misterN
Messages postés40Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention14 décembre 2012 8 juil. 2010 à 19:09
Et si maintenant je veux enregistrer que l'image avec fond transparent en gif ou png est-ce que gdi me le permet? ou doit-on utiliser une autre procédure? Merci pour l'effort.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 2 déc. 2006 à 23:14
inutile de mettre
|Jpg|*.JPG|Ico|*.ICO
dans le filtre.
SavePicture enregistrera un BMP quoi qu'il arrive (quelque soit l'extension spécifiée)
fierobe
Messages postés14Date d'inscriptiondimanche 27 août 2006StatutMembreDernière intervention 3 août 2010 1 déc. 2006 à 22:28
Tu n'as qu'à essayer SATOR .
ajoute un common dialog controle que tu nomme dlg et créer un nouveau boutton de commande out u met le code :
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 17 oct. 2006 à 00:01
on enregistre le rendu : l'image "tournée"
cs_Sator
Messages postés351Date d'inscriptionsamedi 7 février 2004StatutMembreDernière intervention 6 octobre 2010 16 oct. 2006 à 19:38
Hello, j'ai une petite question ....
Si on enregistre l'image, est-ce que l'on enregistre l'image de base ou est-ce que l'on enregistre l'image modifiée (après rotation). Ou est-ce que quelqu'un sais comment faire...
merci pour ce code sympat ...
merci pour d'avance pour vos réponses....
@+ Sator
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 13 oct. 2006 à 11:21
sympa...
gaffe au "Form1" qui traine dans ton code
pas compris pouquoi tu passes par le ClipBoard :
picTarget.Move Me.ScaleWidth - picTarget.width, 0
picTarget.Picture = picSource.Image
picTarget.Refresh
picTarget.Visible = True
Dommage que tu aies intégré le redimensionnement de tes pictureBox dans la function DrawImage, qui, du coup est moins réutilisable
28 juin 2011 à 12:51
Pas de réponse !! donc je m'y suis remis et finalement cela n'a pas été difficile.
A toutes fins utiles.. la fonction qui calcul le rectangle pour inscrire l'image.
w = la largeur de l'image et h la hauteur.
Private Type LaHa
L As Integer
H As Integer
End Type
Dim Retour As LaHa
Sub Rapport(ByVal w As Long, ByVal H As Long, Angle As Single)
Dim nAngle As Single
Dim rAngle As Single
Const Pi = 3.141593
Const Rad = Pi / 180
'Réduit l'angle à 90° si plus grand
If Angle = 360 Then
nAngle = 0
ElseIf Angle > 179 And Angle < 270 Then
nAngle = 90 - (270 - Angle)
Else
nAngle = IIf(Angle < 91, Angle, 90 - (Angle - (Int(Angle / 90) * 90)))
End If
'Traduit degrés en radiant
rAngle = Rad * nAngle
'retourne la largeur à donner au conteneur
Retour.L = Arrondi(((w * Cos(rAngle)) + (H * Sin(rAngle))), 0)
'retourne la hauteur à donner au conteneur
Retour.H = Arrondi(((H * Cos(rAngle)) + (w * Sin(rAngle))), 0)
End Sub
Public Function Arrondi(ByVal Nombre, ByVal Decimales)
Arrondi = Int(Nombre * 10 ^ Decimales + 1 / 2) / 10 ^ Decimales
End Function
A+
24 juin 2011 à 13:50
> Mistern : voir ce snippet http://www.codyx.org/snippet_conversion-images-bmp-jpg-png-avec-gdi_160.aspx
> misterN : tu écrit, au début de ta modif..
'-- pour information un peu de trigo basique...
N'y aurait-il pas moyen de supprimer le "basique...", je m'explique, dans ton approche le calcul se fait pour avoir la possibilité d'inscrire l'image dans le "Gabarit" quel que soit l'angle de rotation.
J'ai étudié la trigono mais il y a tellement longtemps et je ne retrouve plus mes bouquins et j'aimerais faire en sorte que...
En un : l'image s'inscrire entièrement (le plus grand possible) dans le gabarit.
En deux : le gabarit s'adapterait à l'image en modifiant soit la hauteur soit la largeur pour qu'en finale les 4 coins de l'image touche les 4 côtés du gabarit.
Je sais qu'il faut employer Sinus et Cosinus mais je ne sais plus comment.
A l'occasion.. !
Merci d'avance.
A+
(10)
8 juil. 2010 à 19:20
8 juil. 2010 à 19:09
2 déc. 2006 à 23:14
|Jpg|*.JPG|Ico|*.ICO
dans le filtre.
SavePicture enregistrera un BMP quoi qu'il arrive (quelque soit l'extension spécifiée)
1 déc. 2006 à 22:28
ajoute un common dialog controle que tu nomme dlg et créer un nouveau boutton de commande out u met le code :
dlg.Filter = "Bmp|*.BMP|Jpg|*.JPG|Ico|*.ICO"
dlg.DialogTitle = "ENREGISTRER SOUS"
dlg.ShowSave
SavePicture picSource.Image, dlg.FileName
et tu verra ensuite ...
17 oct. 2006 à 00:01
16 oct. 2006 à 19:38
Si on enregistre l'image, est-ce que l'on enregistre l'image de base ou est-ce que l'on enregistre l'image modifiée (après rotation). Ou est-ce que quelqu'un sais comment faire...
merci pour ce code sympat ...
merci pour d'avance pour vos réponses....
@+ Sator
13 oct. 2006 à 11:21
gaffe au "Form1" qui traine dans ton code
pas compris pouquoi tu passes par le ClipBoard :
picTarget.Move Me.ScaleWidth - picTarget.width, 0
picTarget.Picture = picSource.Image
picTarget.Refresh
picTarget.Visible = True
Dommage que tu aies intégré le redimensionnement de tes pictureBox dans la function DrawImage, qui, du coup est moins réutilisable