OVH Cloud OVH Cloud

Image qui clignote lors de son Move

4 réponses
Avatar
Daniel - Z
Bonjour.

J'ai un probl=E8me qui n'a toujours pas =E9t=E9 r=E9solu dans ma grande =
liste de probl=E8me.
Lors de l'=E9v=E8nement Keydown, je fais d=E9placer un contr=F4le image =
:

Image.Move Image.Left + A 'Par exemple ...

L'image, lors du d=E9placement, elle clignote. Et cela est quelque peu =
d=E9plaisant. J'utilise une image avec un fond transparent. Je ne peux =
donc pas emprunter le contr=F4le PictureBox qui ne g=E8re pas la =
transparence du fond.

Merci de m'aider.

4 réponses

Avatar
ng
Tu peux essayer avec un UserControl en utilisant un Mask...

"Daniel - Z" a écrit dans le message de news:
#
Bonjour.

J'ai un problème qui n'a toujours pas été résolu dans ma grande liste de
problème.
Lors de l'évènement Keydown, je fais déplacer un contrôle image :

Image.Move Image.Left + A 'Par exemple ...

L'image, lors du déplacement, elle clignote. Et cela est quelque peu
déplaisant. J'utilise une image avec un fond transparent. Je ne peux donc
pas emprunter le contrôle PictureBox qui ne gère pas la transparence du
fond.

Merci de m'aider.
Avatar
Daniel - Z
Bonjour.

Je suis débutant et je ne sais pas c'est quoi un Mask ou un UserControl.
Désolé.

Un exemple m'aiderait peut-être...
Merci d'avance.

Cordialement
Daniel
Avatar
ng
Voici un petit exemple commenté :/

http://www.babeuk.net/~ng/exemple%20usercontrol%20&%20mask.zip

Nicolas.

"Daniel - Z" a écrit dans le message de news:

Bonjour.

Je suis débutant et je ne sais pas c'est quoi un Mask ou un UserControl.
Désolé.

Un exemple m'aiderait peut-être...
Merci d'avance.

Cordialement
Daniel
Avatar
François Picalausa
Bonjour/soir,

une autre solution probablement moins lourde est d'employer les rasterops en
peignant l'image et son masque.

L'exemple suivant illustre celà:
'Form1
' Propriétés:
' KeyPreview : True
' Contrôles:
' 2 PictureBox : Picture1,Picture2

Option Explicit

Private MaskPicture As Picture
Private ObjectPicture As Picture
Private BackPicture As Picture

Private ObjectCurrentX As Long, ObjectCurentY As Long

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyUp
ObjectCurentY = ObjectCurentY - 5
Case vbKeyDown
ObjectCurentY = ObjectCurentY + 5
Case vbKeyLeft
ObjectCurrentX = ObjectCurrentX - 5
Case vbKeyRight
ObjectCurrentX = ObjectCurrentX + 5
End Select

Picture2.Cls
Picture2.PaintPicture BackPicture, 0, 0, , , , , , , vbSrcCopy
Picture2.PaintPicture MaskPicture, ObjectCurrentX, ObjectCurentY, , , ,
, , , vbSrcAnd
Picture2.PaintPicture ObjectPicture, ObjectCurrentX, ObjectCurentY, , ,
, , , , vbSrcPaint
Set Picture1.Picture = Picture2.Image
End Sub

Private Sub Form_Load()
Set ObjectPicture = LoadPicture("c:test.gif")
Set MaskPicture = LoadPicture("c:testmask.gif")
Set BackPicture = LoadPicture("c:bk.gif")

Picture2.AutoRedraw = True
Picture2.ScaleMode = 3
Picture2.Visible = False
Picture2.Width = Picture1.Width
Picture2.Height = Picture1.Height
Form_KeyDown 0, 0
End Sub

L'image doit avoir un fond noir.
Le mask doit être noir sur fond blanc.
Le mask spécifie les parties transparentes de l'image.
Les zones noires seront tracée, au contraire de celles en blanc.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Daniel - Z" a écrit dans le message de
news:%
Bonjour.

J'ai un problème qui n'a toujours pas été résolu dans ma grande liste
de problème.
Lors de l'évènement Keydown, je fais déplacer un contrôle image :

Image.Move Image.Left + A 'Par exemple ...

L'image, lors du déplacement, elle clignote. Et cela est quelque peu
déplaisant. J'utilise une image avec un fond transparent. Je ne peux
donc pas emprunter le contrôle PictureBox qui ne gère pas la
transparence du fond.

Merci de m'aider.