Afficher un Graphics dans une picturebox

space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008 - 22 févr. 2008 à 19:40
Redman31100 Messages postés 167 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 février 2009 - 24 févr. 2008 à 22:30
bonjour,




je voudrais savoir comment afficher un graphics dans une picturebox !..?



j'ai referencé le composant AxShockwaveFlash dans mon projet, pour jouer un fichier Flash sur mon Form.



ca marche nickel.. cool ! :=)



maintenant, je souhaites recuperer une frame N du fichier Flash pour l'afficher dans une picturebox.



pour ceci, il existe les methodes '




TotalFrames

' et '

GotoFrame



'.


j'ai la methode '




CreatGraphics

' qui me permet ( si je comprend bien ! ) de cree un graphics de l'image pointee par '

GotoFrame



'.


comment je passe un graphics dans un picturebox ???..



j'ai ecris ca :














Dim
FlashMovie

As



New


AxShockwaveFlash


FlashMovie.Movie = ImageFilePath



FlashMovie.StopPlay()



FlashMovie.GotoFrame(FrameNumber)









Dim Gr As Graphics = FlashBox.CreateGraphics




et ensuite ?... je fais comment ?






picturebox.image = ...????....





je ne trouve que des exemples lorsque le graphics et cree depuis un bitmap



1000 merci pour vos lumieres..

8 réponses

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
23 févr. 2008 à 03:54
Salut,

D'après moi, faut chercher ailleur ^^

Il n'est pas possible de recréer une image à partir d'un graphics... en tout cas pas comme ça...
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
23 févr. 2008 à 12:06
Bjr Kevin, merci pour ta reponse

ben Merrrddd... alors !! :=(

1/ sais tu a quoi sert la methode CreatGraphics alors ?

2/ j'ai reussi en utilisant une copie de la zone ecran ( http://www.codeproject.com/KB/GDI-plus/BitBlt.aspx?df=100&forumid=30834&select=702203 )..mais ca me semble pas tres beau ..

3/ as tu une suggestion pour faire ce que je veux ?
un peu plus bas dans le forum, je l'ai fait avec la librairie SWF2Image.
mais j'ai jamais reussi a le faire sans passer par la sauvegarde d'un fichier image pour ensuite relire le fichier et l'afficher dans mon picturebox. ca marche, mais c'est super lent quand tu veux recuperer 1000 images !!!



Cette meme librairie est censé pouvoir travailler en memoire directement ( ce qui serait surement ce qu'il me faut, mais j'ai jamais reussi a le faire comme ca .. voir les posts plus bas ! )

merci, bon WE ..
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
24 févr. 2008 à 05:36
1/ : Elle sert très certainement à dessiner dans ta FlashBox (au moment de l'exécution), exactement de la même façon que pour dessiner dans une PictureBox.

2/ : Effectivement, plutôt pas très "beau"

3/ : J'y connais rien en flash, alors je peux pas trop t'aider sur ce point, dsl 

Bon courage...
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
24 févr. 2008 à 12:38
Kevin,
c'est le VB qui te rend insomniac ?.. 1iere reponse à 3h54 et second à 5h36 !!.. lol ;=)

pour le point 3, ce n'est pas une question concernant reelement le Flash .. mais plustot une question VB pour utiliser la librairie indiquee.
voici l'aide fournie :
http://www.bytescout.com/help/SWFToImage/index.html




je viens d'avoir une reponse du support ( tres limitee car ils veulent me faire payer le support ) :


"RGB format is used (BMP image streamed as a byte array)"

> donc il faut que je trouve comment creer une image à partir d'un stream de tableau d'octet ...

si suggestions .. n'hesites pas ;=)

Philippe

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

Posez votre question
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
24 févr. 2008 à 15:28
UNE SOLUTION !!?? Youpi !!


Public
Class Form1



Private



Sub
Form1_Load(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles



MyBase
.Load














Dim
SWFToImage = CreateObject(

"SWFToImage.SWFToImageObject"
)SWFToImage.InitLibrary(


"demo"
,

"demo"
)SWFToImage.InputSWFFileName =


"C:\kiss.swf"





SWFToImage.ImageWidth 64SWFToImage.ImageHeight 64

SWFToImage.ImageOutputType = 0

SWFToImage.Execute_Begin()

SWFToImage.Frameindex = 10

SWFToImage.Execute_GetImage()

TextBox1.Text = SWFToImage.Framescount

TextBox2.Text = SWFToImage.BinaryImageSize()


Dim
X, Y

As



Integer

X = SWFToImage.ImageWidth


Y = SWFToImage.ImageHeight







Dim
image

As



New
Bitmap(X, Y, Imaging.PixelFormat.Format32bppRgb)


Dim
image_tab()

As



Byte






ReDim
image_tab(SWFToImage.BinaryImageSize)Array.Copy(SWFToImage.BinaryImage, image_tab, SWFToImage.BinaryImageSize)


'' Copies the Object array to the integer array.

image = BytesToImg(image_tab)


PictureBox1.Width = X


PictureBox1.Height = Y


PictureBox1.Image = image







End



Sub











Private



Function
BytesToImg(

ByVal
bmpBytes()

As



Byte
)

As
Image





Dim
ms

As
System.IO.MemoryStream =

New
System.IO.MemoryStream(bmpBytes)




Dim
img

As
Image = Image.FromStream(ms)     

' Do NOT close the stream!








Return
img


End



Function

End
Class
Redman31100 Messages postés 167 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 février 2009
24 févr. 2008 à 20:22
Space_walker, si tu pige l'anglais, CreateGraphics veut dire, créer Graphics autrement dit c'est pour dessiner sur la frame, et pas inversement pour prendre l'image de la frame, donc si tu veux programmer il est nécessaire que tu comprennes l'anglais.

Redman
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
24 févr. 2008 à 22:11
redman, t'es une grosse tache, commence deja par ecrire sans fautes et ensuite evite de perdre ton temps a repondre ce genre de conneries
Redman31100 Messages postés 167 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 février 2009
24 févr. 2008 à 22:30
Je suis pas une tâche et j'écris sans fautes, et si tu dis que ta question est un genre de connerie alors je te réponds plus.

Redman
Rejoignez-nous