cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021
-
9 juin 2005 à 20:13
mouadh_net
Messages postés2Date d'inscriptionvendredi 20 juillet 2007StatutMembreDernière intervention16 août 2009
-
16 août 2009 à 10:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
mouadh_net
Messages postés2Date d'inscriptionvendredi 20 juillet 2007StatutMembreDernière intervention16 août 20091 16 août 2009 à 10:32
merci
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015 14 juin 2005 à 16:07
et bien voilà! En plus j'adore tout ce qui est graphique ;)
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 14 juin 2005 à 15:00
Merci pour le link qui traite l' affichage du curseur.
Pour ce qui concerne le dégradé, tu as raison, elle est archi-connue aussi :)
J' ai d' ailleurs posté la semaine dernière (à la demande de XGalletteX) une source pour faire toute forme géométrique en dégradé! et celle-ci je ne l' avais jamais vu !
A+
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015 14 juin 2005 à 14:34
Mais tu n'est pas méchant, Mauricio, ne te dévalorises pas ainsi...il ya un début à tout, comme quand on découvre les formes géométriques et les dégradés, c'est archi-connu aussi...ah cette jeunesse ! ;)
mais nous avons fait également le curseur +l'ombre du curseur...nous le mettrons à la prochaine màj
drjerome, JROD
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 14 juin 2005 à 10:58
Salut tout le monde, je vais mettre mon grin de sel aussi :)
je voudrai pas être méchant mais ce code doit exister dans au moins une bonne cinquantaine de sources sur ce site ...
A remarquer cependant, si mes souvenirs sont bons, qu' on remarque un clignotement de l' ecran sous win95/98! Donc il faut faire attention dans le cas où vous voudriez utiliser cette source de façon répétée (dans un timer par ex.) ...
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015 12 juin 2005 à 19:56
bien sûr,avant la capture il faut penser à faire un "hide" (form1.hide) du form associé à un "sleep" (exemple : sleep(2000) )
A la fin on fait un "show" du form (form1.show) pour faire réapparaitre la fenêtre
drjerome
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015 12 juin 2005 à 19:37
pour récupérer l'image du clipboard, l'astuce consiste à rajouter au bon endroit la ligne "application.ProcessMessages" :
__________________________________________________________
begin
keybd_event(VK_SNAPSHOT{=$2C},0,0,0);
keybd_event(VK_SNAPSHOT{=$2C},0,KEYEVENTF_KEYUP,0);
application.ProcessMessages;
Image1.Picture.LoadFromClipboardFormat(cf_bitmap,ClipBoard.GetAsHandle(cf_Bitmap), 0);
end;
__________________________________________________________
on peut rajouter par sécurité (pour les tatillons) :
"if ClipBoard.HasFormat(cf_bitmap) then"
On trouve sur internet des exemples de capture avec le curseur de la souris visible (j'ai mis un exemple sur un autre site).
Egalement, je finis de mettre au point un exemple de capture avec curseur et l'ombre du curseur.
Encore mieux : ce serait intéressant de pouvoir rajouter les hints de windows aux captures. Les hints de Delphi sont "capturables"...ceux de Windows le sont moins...
Bon, un merci tout de même à ewertheimer pour son exemple ;)
drjerome
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 11 juin 2005 à 13:47
Pourquoi se compliquer la vie ?
Pour capturer l'écran dans le clipBoard, il suffit d'appuyer sur la touche Impr écran du clavier.
MonBitmap.Assign(ClipBoard) permet ensuite de récupérer l'image dans un bitmap pour en faire n'importe quoi...
comme je le fais régulèrement avec mon prog Leonardo.
jp ?o?
ewertheimer
Messages postés161Date d'inscriptiondimanche 16 janvier 2005StatutMembreDernière intervention26 janvier 2009 10 juin 2005 à 18:45
oui mais les boutons c'etait plutot pour montrer les differentes parti du code.
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 10 juin 2005 à 13:52
Bon ben plus qu'a ajouter la possibilité de faire une capture d'un overlay, ou d'un affichage directx. lol.
Marneus Calgar
Messages postés39Date d'inscriptionmardi 3 octobre 2000StatutMembreDernière intervention10 juin 2005 10 juin 2005 à 07:39
Il y a déjà du progrès par rapport au pseudo-tutoriel ^^ Sinon effectivement, il ne faut pas oublier de faire un ReleaseDC. Et TBitmap est bien plus adapté au stockage que TPicture (TPicture permettant d'afficher un TBitmap).
Si tu veux une fonction pour générer le Bitmap directement :
Ensuite il ne te restera plus qu'à assigner ce bitmap au TPicture...
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021 9 juin 2005 à 20:13
Juste quelques points qui me semble etrange.
Pourquoi utilises-tu Tpicture plutot que Tbitmap qui me semblerais plus approprié ?
Tout Getdc doit etre libéré par un releasedc mais bon, pleins de coders font cette erreur (il doinvent pas avoir le meme msdn que moi, lol).
Pourquoi un bouton afficher puisque l'affichage peut etre automatisé.
donc se code me semble suffisant:
procedure TForm1.ButtonRempliBitmapClick(Sender: TObject);
var DesktopDc : hdc;
ImageBureau : Tbitmap;
begin
ImageBureau:=Tbitmap.createsized(Screen.Width,Screen.Height);
DesktopDc:=GetDC(GetDesktopWindow);
BitBlt(ImageBureau.Canvas.Handle,0,0,Screen.Width,Screen.Height,
DesktopDc,0,0,SrcCopy);
Releasedc(GetDesktopWindow,DesktopDc);
Image1.Picture.Bitmap.Assign(ImageBureau);
ImageBureau.Free;
Image1.Invalidate;
end;
procedure TForm1.ButtonSauverSurFichierClick(Sender: TObject);
begin
if SaveDialog1.Execute then
Image1.Picture.Bitmap.SaveToFile(SaveDialog1.FileName);
end;
procedure TForm1.ButtonCopierVersClipBoardClick(Sender: TObject);
begin
Clipboard.Assign(Image1.Picture.Bitmap);
end;
16 août 2009 à 10:32
14 juin 2005 à 16:07
14 juin 2005 à 15:00
Pour ce qui concerne le dégradé, tu as raison, elle est archi-connue aussi :)
J' ai d' ailleurs posté la semaine dernière (à la demande de XGalletteX) une source pour faire toute forme géométrique en dégradé! et celle-ci je ne l' avais jamais vu !
A+
14 juin 2005 à 14:34
Pour ceux qui ça intéresse, j'avais mis là le code de capture d'écran avec le curseur (un grand classique): http://phidels.com/php/index.php3?page=../php/pagetelechargementzip.php3&id=77
mais nous avons fait également le curseur +l'ombre du curseur...nous le mettrons à la prochaine màj
drjerome, JROD
14 juin 2005 à 10:58
je voudrai pas être méchant mais ce code doit exister dans au moins une bonne cinquantaine de sources sur ce site ...
A remarquer cependant, si mes souvenirs sont bons, qu' on remarque un clignotement de l' ecran sous win95/98! Donc il faut faire attention dans le cas où vous voudriez utiliser cette source de façon répétée (dans un timer par ex.) ...
12 juin 2005 à 19:56
A la fin on fait un "show" du form (form1.show) pour faire réapparaitre la fenêtre
drjerome
12 juin 2005 à 19:37
__________________________________________________________
keybd_event(VK_SNAPSHOT{=$2C},0,0,0);
keybd_event(VK_SNAPSHOT{=$2C},0,KEYEVENTF_KEYUP,0);
__________________________________________________________
pour récupérer l'image du clipboard, l'astuce consiste à rajouter au bon endroit la ligne "application.ProcessMessages" :
__________________________________________________________
begin
keybd_event(VK_SNAPSHOT{=$2C},0,0,0);
keybd_event(VK_SNAPSHOT{=$2C},0,KEYEVENTF_KEYUP,0);
application.ProcessMessages;
Image1.Picture.LoadFromClipboardFormat(cf_bitmap,ClipBoard.GetAsHandle(cf_Bitmap), 0);
end;
__________________________________________________________
on peut rajouter par sécurité (pour les tatillons) :
"if ClipBoard.HasFormat(cf_bitmap) then"
On trouve sur internet des exemples de capture avec le curseur de la souris visible (j'ai mis un exemple sur un autre site).
Egalement, je finis de mettre au point un exemple de capture avec curseur et l'ombre du curseur.
Encore mieux : ce serait intéressant de pouvoir rajouter les hints de windows aux captures. Les hints de Delphi sont "capturables"...ceux de Windows le sont moins...
Bon, un merci tout de même à ewertheimer pour son exemple ;)
drjerome
11 juin 2005 à 13:47
Pour capturer l'écran dans le clipBoard, il suffit d'appuyer sur la touche Impr écran du clavier.
MonBitmap.Assign(ClipBoard) permet ensuite de récupérer l'image dans un bitmap pour en faire n'importe quoi...
comme je le fais régulèrement avec mon prog Leonardo.
jp ?o?
10 juin 2005 à 18:45
10 juin 2005 à 13:52
10 juin 2005 à 07:39
Si tu veux une fonction pour générer le Bitmap directement :
http://www.darkskull.net/?module=viewarticle&idarticle=30
Ensuite il ne te restera plus qu'à assigner ce bitmap au TPicture...
9 juin 2005 à 20:13
Pourquoi utilises-tu Tpicture plutot que Tbitmap qui me semblerais plus approprié ?
Tout Getdc doit etre libéré par un releasedc mais bon, pleins de coders font cette erreur (il doinvent pas avoir le meme msdn que moi, lol).
Pourquoi un bouton afficher puisque l'affichage peut etre automatisé.
donc se code me semble suffisant:
procedure TForm1.ButtonRempliBitmapClick(Sender: TObject);
var DesktopDc : hdc;
ImageBureau : Tbitmap;
begin
ImageBureau:=Tbitmap.createsized(Screen.Width,Screen.Height);
DesktopDc:=GetDC(GetDesktopWindow);
BitBlt(ImageBureau.Canvas.Handle,0,0,Screen.Width,Screen.Height,
DesktopDc,0,0,SrcCopy);
Releasedc(GetDesktopWindow,DesktopDc);
Image1.Picture.Bitmap.Assign(ImageBureau);
ImageBureau.Free;
Image1.Invalidate;
end;
procedure TForm1.ButtonSauverSurFichierClick(Sender: TObject);
begin
if SaveDialog1.Execute then
Image1.Picture.Bitmap.SaveToFile(SaveDialog1.FileName);
end;
procedure TForm1.ButtonCopierVersClipBoardClick(Sender: TObject);
begin
Clipboard.Assign(Image1.Picture.Bitmap);
end;
Bon Coding...
ManChesTer.