Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SAUVEGARDE D'UN GRAPHIQUE FAIT EN GDI+


Information sur la source

Description

Cliquez pour voir la capture en taille normale
Bah voilà c en fait un code ki sert à sauvegarder un graphique ds un PictureBox que j'ai fait à l'aide de l'outil Paint en GDI+
 

Source

  • Private buffer As Bitmap
  • Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As IntPtr, ByVal X As Integer, _
  • ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, _
  • ByVal hSrcDC As IntPtr, ByVal xSrc As Integer, ByVal ySrc As Integer, _
  • ByVal nSrcWidth As Integer, ByVal nSrcHeight As Integer, ByVal dwRop As Integer) As Integer
  • Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  • Dim controlGraphics As Graphics = Me.PictureBox_Graphique.CreateGraphics ' graphique form
  • Const SRCCOPY As Integer = &HCC0020
  • Dim controlSize As Size
  • controlSize = Me.PictureBox_Graphique.ClientSize()
  • buffer = New Bitmap(controlSize.Width, controlSize.Height)
  • Dim bufferGraphics As Graphics = controlGraphics.FromImage(buffer)
  • Dim bufferHdc As IntPtr = bufferGraphics.GetHdc 'hdc de la form
  • Dim controlHdc As IntPtr = controlGraphics.GetHdc
  • StretchBlt(bufferHdc, 0, 0, controlSize.Width, controlSize.Height, _
  • controlHdc, 0, 0, controlSize.Width, controlSize.Height, SRCCOPY)
  • bufferGraphics.ReleaseHdc(bufferHdc)
  • controlGraphics.ReleaseHdc(controlHdc)
  • buffer.Save("C:\Documents and Settings\Ludo\Bureau\eeeezzz.Jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
Private buffer As Bitmap
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As IntPtr, ByVal X As Integer, _
ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, _
ByVal hSrcDC As IntPtr, ByVal xSrc As Integer, ByVal ySrc As Integer, _
ByVal nSrcWidth As Integer, ByVal nSrcHeight As Integer, ByVal dwRop As Integer) As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim controlGraphics As Graphics = Me.PictureBox_Graphique.CreateGraphics ' graphique form
Const SRCCOPY As Integer = &HCC0020
Dim controlSize As Size
controlSize = Me.PictureBox_Graphique.ClientSize()
buffer = New Bitmap(controlSize.Width, controlSize.Height)
Dim bufferGraphics As Graphics = controlGraphics.FromImage(buffer)
Dim bufferHdc As IntPtr = bufferGraphics.GetHdc 'hdc de la form
Dim controlHdc As IntPtr = controlGraphics.GetHdc
StretchBlt(bufferHdc, 0, 0, controlSize.Width, controlSize.Height, _
controlHdc, 0, 0, controlSize.Width, controlSize.Height, SRCCOPY)
bufferGraphics.ReleaseHdc(bufferHdc)
controlGraphics.ReleaseHdc(controlHdc)
buffer.Save("C:\Documents and Settings\Ludo\Bureau\eeeezzz.Jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

Commentaires et avis

signaler à un administrateur
Commentaire de ludovicanceaux le 27/02/2005 17:27:14

Par contre si kelk'un à plus simple je compte sur vous lollllllllll!!!!!!!!!!!! et si kelk'un sai ossi komment efface le graphique car je sai pô komment on fait
merci

signaler à un administrateur
Commentaire de liquide le 28/02/2005 10:25:37

Salut
controlGraphics.Graphics.Clear(Color.AliceBlue)

--- je ne sais plus si faut mettre graphics ou pas, c'est suivant le eventarg, dans ce cas la , je ne crois pas

De plus je ne pense pas que tu sois obligé d'utiliser l'api strech ..http://fr.gotdotnet.com/quickstart/winforms/

signaler à un administrateur
Commentaire de ludovicanceaux le 28/02/2005 12:17:38

OUhaip mai c tout ce ke j'ai trouvé lolllllllllllllllll

signaler à un administrateur
Commentaire de TeBeCo le 05/03/2005 16:48:09

bizarre que les codeur .net ai besoin d'utiliser les API
c'est des vielle methode de VB6 ca

GDI+ => code entierement managé

System.Drawings
System.Drawings.Graphics

dim toto as graphics = me.CreateGraphics

ensuite manip du graphics et a chque modif, enregistrement du grpah dans la var pour enviter les zone non repainte
et a l'eve,nt paint on reapplique le graph

c tout ca qu'il faut saovoir pratiquement, liser des bouquin .net
et arreter les API en .net c lent a coté du managé

+++

signaler à un administrateur
Commentaire de ludovicanceaux le 05/03/2005 17:05:06

lol dsl mec mais en fait c tout ce ke j'ai trouvé et pourtant j'en lis des boukins, mais c tout ce que j'ai là!!!!!!!!!!!!!!!!!! mais tu sais kan je voulai sauvegardé mon graph fait en gdi il me disai ke l'image du PictureBox ne pouvai pô etre vide tu voi le délire!!!!!!!!!!!!

signaler à un administrateur
Commentaire de ludovicanceaux le 05/03/2005 17:08:30

et moi même j'ai microapplication vb.net collection réference(quand même 1200 pages) et il n'y a pô une ligne sur le gdi+ maintenant je ne vai pô me ruiner lolll en boukin tout ca pour éviter de me servir d'api lolllllllll!!!!!!!!

signaler à un administrateur
Commentaire de TeBeCo le 05/03/2005 18:25:23

ui t'a raison
pourant dans microapp yavais une source d'un Paint ultrasimple
idem dans MSDN c bourré d'exemple GDI+

au cas ou tu l'ai pas acheté
www.MSDN.com
ya une belle case recherche
et des option => library pour la doc
Sample & &download pour les exmeple enfin ca site c toutes la doc en ligne alors la pas la peie de dire que c pas sur le site

mais je sais que c pas une partie de plaisir ++

signaler à un administrateur
Commentaire de ludovicanceaux le 05/03/2005 18:38:50

lolllllllll c clair c pô une partie de plaisir car en + c en anglais snif snif!!!!!!! mai bon je vai regarder merci

signaler à un administrateur
Commentaire de liquide le 05/03/2005 18:40:43

alors voici un exemple a l'etat brut du gdi pour les images.

cet exemple etait pour des smileys, d'ou la boucle pour repeindre cetaine parties. il prend aussi tout une serie de smileys issu d'un seul fichier bmp, d'ou la capture de certaines coordonnées precises. Il verifie aussi l'existence du fichier sur le disque dur

****************
If System.IO.File.Exists(PathE & RPChar & ".gif") = False Then
                                        Dim thisExe As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
                                        Dim file As System.IO.Stream = thisExe.GetManifestResourceStream("Client_Smail.R_All.bmp")
                                        Dim NewImage1 As Image = Image.FromStream(file)

                                        Dim destRect As New Rectangle(0, 0, 25, 22)
                                        Dim srcRect As New Rectangle(PosX, PosY, 25, 22)
                                        Dim units As GraphicsUnit = GraphicsUnit.Pixel

                                        Dim newBitmap As Bitmap = New Bitmap(25, 22, Imaging.PixelFormat.Format64bppPArgb)
                                        Dim g As Graphics = Graphics.FromImage(newBitmap)
                                        g.DrawImage(NewImage1, destRect, srcRect, units)
                                        'newBitmap.MakeTransparent(Color.FromArgb(255, 0, 0, 255))

                                        Dim v As Integer
                                        Dim b As Integer

                                        For v = 0 To newBitmap.Width - 1
                                            For b = 0 To newBitmap.Height - 1
                                                Dim Pixel As Drawing.Color = newBitmap.GetPixel(v, b)
                                                If Pixel.R = 0 And Pixel.G = 0 And Pixel.B = 255 Then
                                                    newBitmap.SetPixel(v, b, Color.FromArgb(128, 255, 255, 255))
                                                ElseIf Pixel.R = 166 And Pixel.G = 202 And Pixel.B = 240 Then
                                                    newBitmap.SetPixel(v, b, Color.FromArgb(255, 255, 255, 0))
                                                End If
                                            Next
                                        Next
                                        newBitmap.Save(PathE & RPChar & ".gif", ImageFormat.Gif)
                                    End If
********************


Nb : je cherche a faire la transparence en sauvegarde, mais la je bloque royalement, si qq'un a une solution, car pour le gif c'est foutu je crois, il doit y avoir une programmation specifique

j'espere que ca pourra servir

signaler à un administrateur
Commentaire de OneHacker le 01/07/2006 13:08:48

Ben pour le gif faut que tu mette une couleur de transparence à ta form qui correspond à la couleur de fond de ton gif non transparent.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.