krypto2000
Messages postés23Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention 3 mars 2005
-
30 août 2004 à 16:38
krypto2000
Messages postés23Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention 3 mars 2005
-
31 août 2004 à 12:52
Hello,
Est-ce que quelqu'un pourrait m'indiquer comment faire pour afficher du texte en surimpression à l'écran.
Je m'explique :
J'ai fais un programme qui execute une action une fois un compte à rebours terminé.
Le programme reste dans la barre des tâches, et le but est que 10 secondes avant la fin du compte à rebours les chiffres apparaissent au milieu de l'écran en vert comme sur une télévision...
cs_saib
Messages postés38Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention15 mars 2010 30 août 2004 à 19:26
Salut
GetDC(0) te renvoie le DeviceContext de l'ecran, donc tu peut faire un DrawText avec, ca affichera le texte au dessus de tout.
pour plus de facilité, tu peut assigner ce HDC au Handle d'un TCanvas, et dessiner sur ce TCanvas, qui represente desormais l'ecran.
Dans tous les cas tu doit appeler ReleaseDC apres avoir dessiné pour relacher le HDC.
Il faudra egalement qu tu gere le rafraichissement de l'ecran toi meme, car ce qui tu dessine n'est effacé que si on dessine par dessus, si l'affichage est raffraichit ou si une fenetre se trouvant derriere ton dessin est redessinée.
Une solution plus pratique serait peut etre d'utiliser la technique des formes non-rectangulaires :
- Tu cree une Form qui sera celle affichée pour representer le compte a rebours
- Tu places un TLabel sur cette Form, avec la propriété Font.Color a clGreen, avec la police et la taille que tu veux
- Tu met ma propriété FormStyle de la Form a fsAlwaysOnTop (la Form sera toujours en premier plan sur l'ecran)
- Tu met la propriété BorderStyle a bsNone (Pas de bordure ni de barre de titre
- Tu met la propriété Visible de cette Form a False, ainsi elle ne sera pas visible tant que le compte a rebours n'est pas commencé
- Tu met la couleur de fond de ta forme en clFushia (par exemple)
- Tu met la propriété TransparentColor a True et la propriété TransparentColorValue a clFushia
- Il n'y a plus qu'a mettre la propriété Visible := True quand ton compte a rebours commence et affecter le texte que tu veut a ton Label sur l'evenement d'un timer
krypto2000
Messages postés23Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention 3 mars 2005 31 août 2004 à 12:52
Okay merci beacoup !!
J'ai testé les deux solutions, les deux fontionnent correctement
sauf que il est vrai que la question du rafraichissement en utilisant le HDC n'est pas forcement evidente à gerer, d'autant plus que le resultat final est exactement le même !!
C'est pourquoi je vais utiliser la deuxieme methode qui est nettement moin compliquée...