Bonjour,
Je cherche à afficher des images dans une form.
Les images sont générées par un processus plutôt long et je ne peux pas (ne
veux pas) relancer la génération à chaque Paint de ma form.
Il faut donc que je stocke ces images, en object Bitmap, par exemple. Je les
génère bien puisque je peux faire un .Save et visualiser le .BMP.
Le problème, c'est que je n'arrive pas à les afficher dans ma form. Je
voudrais utiliser les API (BitBlt et compagnie), donc passer par un GetHDC.
Qui peut m'aider dans ce fouilli de Graphics?
Private Sub pic_Paint(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles pic.Paint
Dim lBitMap As Bitmap
Dim lGraphics As Graphics
Dim lHdcDest As IntPtr
Dim lHdcSrc As IntPtr
e.Graphics.Clear(Drawing.Color.Black)
lHdcDest = e.Graphics.GetHdc
For Each lBitMap In mColGraphics
lGraphics = e.Graphics.FromImage(lBitMap)
lHdcSrc = lGraphics.GetHdc
'Pour le test, j'écrase le précédent, ce n'est pas le pblm pour
l'instant
BitBlt(lHdcDest, 0, 0, pic.ClientRectangle.Width,
pic.ClientRectangle.Height, lHdcSrc, 0, 0, SRCCOPY)
lGraphics.ReleaseHdc(lHdcSrc)
lGraphics.Dispose()
Next
e.Graphics.ReleaseHdc(lHdcDest)
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
PierreSlideM
J'utilise ça qui marche bien :
dim newBitmap As New Bitma(me.Width,me.Height,PixelFormat.Format32bppArgb) Dim Graph As Graphics = Graphics.FromImage(newBitmap) --->>ICI,Dessiner dans Graph me.BackgroundImage=newBitmap.Clone newBitmap.Dispose
"Emmanuel DURAND @wanadoo.fr>" a écrit :
Bonjour, Je cherche à afficher des images dans une form. Les images sont générées par un processus plutôt long et je ne peux pas (ne veux pas) relancer la génération à chaque Paint de ma form. Il faut donc que je stocke ces images, en object Bitmap, par exemple. Je les génère bien puisque je peux faire un .Save et visualiser le .BMP. Le problème, c'est que je n'arrive pas à les afficher dans ma form. Je voudrais utiliser les API (BitBlt et compagnie), donc passer par un GetHDC. Qui peut m'aider dans ce fouilli de Graphics?
Private Sub pic_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles pic.Paint Dim lBitMap As Bitmap Dim lGraphics As Graphics Dim lHdcDest As IntPtr Dim lHdcSrc As IntPtr e.Graphics.Clear(Drawing.Color.Black) lHdcDest = e.Graphics.GetHdc For Each lBitMap In mColGraphics lGraphics = e.Graphics.FromImage(lBitMap) lHdcSrc = lGraphics.GetHdc 'Pour le test, j'écrase le précédent, ce n'est pas le pblm pour l'instant BitBlt(lHdcDest, 0, 0, pic.ClientRectangle.Width, pic.ClientRectangle.Height, lHdcSrc, 0, 0, SRCCOPY) lGraphics.ReleaseHdc(lHdcSrc) lGraphics.Dispose() Next e.Graphics.ReleaseHdc(lHdcDest) End Sub
J'utilise ça qui marche bien :
dim newBitmap As New Bitma(me.Width,me.Height,PixelFormat.Format32bppArgb)
Dim Graph As Graphics = Graphics.FromImage(newBitmap)
--->>ICI,Dessiner dans Graph
me.BackgroundImage=newBitmap.Clone
newBitmap.Dispose
"Emmanuel DURAND @wanadoo.fr>" a écrit :
Bonjour,
Je cherche à afficher des images dans une form.
Les images sont générées par un processus plutôt long et je ne peux pas (ne
veux pas) relancer la génération à chaque Paint de ma form.
Il faut donc que je stocke ces images, en object Bitmap, par exemple. Je les
génère bien puisque je peux faire un .Save et visualiser le .BMP.
Le problème, c'est que je n'arrive pas à les afficher dans ma form. Je
voudrais utiliser les API (BitBlt et compagnie), donc passer par un GetHDC.
Qui peut m'aider dans ce fouilli de Graphics?
Private Sub pic_Paint(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles pic.Paint
Dim lBitMap As Bitmap
Dim lGraphics As Graphics
Dim lHdcDest As IntPtr
Dim lHdcSrc As IntPtr
e.Graphics.Clear(Drawing.Color.Black)
lHdcDest = e.Graphics.GetHdc
For Each lBitMap In mColGraphics
lGraphics = e.Graphics.FromImage(lBitMap)
lHdcSrc = lGraphics.GetHdc
'Pour le test, j'écrase le précédent, ce n'est pas le pblm pour
l'instant
BitBlt(lHdcDest, 0, 0, pic.ClientRectangle.Width,
pic.ClientRectangle.Height, lHdcSrc, 0, 0, SRCCOPY)
lGraphics.ReleaseHdc(lHdcSrc)
lGraphics.Dispose()
Next
e.Graphics.ReleaseHdc(lHdcDest)
End Sub
dim newBitmap As New Bitma(me.Width,me.Height,PixelFormat.Format32bppArgb) Dim Graph As Graphics = Graphics.FromImage(newBitmap) --->>ICI,Dessiner dans Graph me.BackgroundImage=newBitmap.Clone newBitmap.Dispose
"Emmanuel DURAND @wanadoo.fr>" a écrit :
Bonjour, Je cherche à afficher des images dans une form. Les images sont générées par un processus plutôt long et je ne peux pas (ne veux pas) relancer la génération à chaque Paint de ma form. Il faut donc que je stocke ces images, en object Bitmap, par exemple. Je les génère bien puisque je peux faire un .Save et visualiser le .BMP. Le problème, c'est que je n'arrive pas à les afficher dans ma form. Je voudrais utiliser les API (BitBlt et compagnie), donc passer par un GetHDC. Qui peut m'aider dans ce fouilli de Graphics?
Private Sub pic_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles pic.Paint Dim lBitMap As Bitmap Dim lGraphics As Graphics Dim lHdcDest As IntPtr Dim lHdcSrc As IntPtr e.Graphics.Clear(Drawing.Color.Black) lHdcDest = e.Graphics.GetHdc For Each lBitMap In mColGraphics lGraphics = e.Graphics.FromImage(lBitMap) lHdcSrc = lGraphics.GetHdc 'Pour le test, j'écrase le précédent, ce n'est pas le pblm pour l'instant BitBlt(lHdcDest, 0, 0, pic.ClientRectangle.Width, pic.ClientRectangle.Height, lHdcSrc, 0, 0, SRCCOPY) lGraphics.ReleaseHdc(lHdcSrc) lGraphics.Dispose() Next e.Graphics.ReleaseHdc(lHdcDest) End Sub
Emmanuel DURAND
Merci, Mais je cherche à utiliser BitBlt pour d'autres traitements...
Merci,
Mais je cherche à utiliser BitBlt pour d'autres traitements...