Un screenshot de ce qu'il y a derrière un control...

crossblade Messages postés 113 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 3 février 2007 - 16 sept. 2006 à 12:02
crossblade Messages postés 113 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 3 février 2007 - 16 sept. 2006 à 21:52
Salut à tous,
Voilà j'ai besoin de votre aide... je programme sous
VB6
Je souhaite afficher sur le fond d'un usercontrol ce qu'il y a derrière lui...

En fait je fais un alphablend avec des ombres.
(avec Public Declare Function AlphaBlend Lib "msimg32.dll") et d'autres fonctions.
Je ne peux donc utiliser la propriété maskpicture car le résultat est moche.
il faudrait pouvoir récupérer tout ce qui est derrière mon usercontrol...
En fait il me faudrait un screenshot qui ignore la présence de mon usercontrol..

merci d'avance à tous, et bonne prog

* .-'''-.,.-"'-. +
( !  Bon ! . *
+ ".  Surf!  " ( crossblade )
* . "'-.,.-'" + .

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 sept. 2006 à 13:00
Il te faut récupèrer le picture de la form (ou du container) contenant ton usercontrol :

Il me semble que c'est :
UserControl.Container.Picture
0
crossblade Messages postés 113 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 3 février 2007
16 sept. 2006 à 14:03
ça marche s'il n'y a qu'une image en dessous mais ce code ne prend pas en compte la présence d'autres control en dessous. Si je met un label avec un fond noir derrière... ben il ne le prend pas en compte.

j'avais essayé ça dans resize :
Form1.Widget1.Visible = False
Form1.Refresh
Call BitBlt(UserControl.hdc, 0, 0, Wii, Hii, Form1.hdc, 0, 0, vbSrcCopy)
Form1.Widget1.Visible = True

mais mon usercontrol clignote beaucoup (ce qui est un peu normal)
donc ben voilà je sais pas si t'as autre chose mais merci quand même...

* .-'''-.,.-"'-. +
( !  Bon ! . *
+ ".  Surf!  " ( crossblade )
* . "'-.,.-'" + .
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 sept. 2006 à 14:11
Une astuce qui en vaut une autre : masquer ton contrôle, faire le BitBlt du hDC du container, puis réafficher ton contrôle.

J'avais moi aussi l'idée de faire une ombre sur les contrôles d'une feuille (j'ai déposée une source à ce propos), mais j'ai finalement laissé tombé à cause de ce genre de chose : pas le temps de m'y pencher, mais par API, le DC du container contient l'image de ton contrôle si celui-ci est visible, ce qui limite déjà beaucoup les opérations possibles !
0
crossblade Messages postés 113 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 3 février 2007
16 sept. 2006 à 21:52
c'est que j'ai pour l'instant mais ça fait clignoter le control et en plus je dois le rafraichir régulièrement.... merci de ton aide
j'vais tenter une autre voie


j'vais m'aider de ça
http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=55352&lngWId=1


merci à toi
* .-'''-.,.-"'-. +
( !  Bon ! . *
+ ".  Surf!  " ( crossblade )
* . "'-.,.-'" + .
0
Rejoignez-nous