IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Copie d'écran : une partie de la fenetre


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 47
    Points
    47
    Par défaut Copie d'écran : une partie de la fenetre
    Bonjour,

    Voila je sais faire des copies d'écrans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ImageBureau := TPicture.Create;
     ImageBureau.Bitmap.Width := Screen.Width;//largeur
     ImageBureau.Bitmap.Height := Screen.Height;// hauteur
    mon problème est que je souhaiterais commencer non pas de 0 donc en haut a gauche mais à 50 vers la droite. et idem descendre de 100 pixels.

    exemple:


    Je voudrais que la partie bleue

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Tu peux t'inspirer du code de la FAQ ici

    Sinon, j'ai un bout de code, mais à toi de comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TFPrincipale.Copier(Sender: TObject);
    var
    ImageBureau:TPicture;
    HandleDCBureau : HDC;
    begin
      ImageBureau:=TPicture.Create;// Déclaration du Picture
      HandleDCBureau:=GetDC(GetDesktopWindow);
      ImageBureau.Bitmap.Width := ZoneDessin.Width-5;
      ImageBureau.Bitmap.Height := ZoneDessin.Height-5;
      BitBlt(ImageBureau.Bitmap.Canvas.Handle,0,0,ZoneDessin.Width,ZoneDessin.Height,
    HandleDCBureau,ZoneDessin.ClientOrigin.X,ZoneDessin.ClientOrigin.Y,SrcCopy);//recopie l'image du desktop vers ImageBureau
      ReleaseDC(GetDesktopWindow,HandleDCBureau);
    end;
    Bon courage

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    ok je regarde mais zone dessin c'est quoi??? et sinon le code sa va mais pour prendre une certaine tu fais " -5 " ?

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    c'est bon j'ai pris le code de la FAQ en fait je chercher juste ce code tout bete:



    LOL

    Encore une fois thanks !

    Bonne nuit !

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    EN FAIT NON !!!!!

    on peut pas prendre en bas a droite de la page!!!!!

    impossible !!!!

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Ton screenshoot, tu veux le décaler car en faite tu souhaite ne pas prendre une partie de ton interface ?

    Donc, en faite, tu veux juste faire une copie d'un canvas d'un composnat non?

    Je sais pas si je suis clair ...

  7. #7
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Tu peux creer un objet TCanvas et y affecter le handle recupéré par getWindowDC. Le handle de l'ecran est "0".

    apres tu effectuer tous les traitement que tu veux, et en particulier acceder a la prop pixels ou encore stretchdraw et copyrect

    Tu n'as plus qu'a creer un Bitmap, y copier la partie du canvas que tu souhaite et le tour est joué
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  8. #8
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par ero-sennin
    Donc, en faite, tu veux juste faire une copie d'un canvas d'un composnat non?

    Si tel est le cas, au lieu de transmettre le handle de l'ecran (0) a getwindowDC suffit de lui transmettre le handle du composant. Pour une application tiers, tu recupere ce handle via getwindow et getforegroundwindow
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    je veux recuperer la carte de google maps selon une adresse ou un itinéraire sachant que l'écran ne bouge pas:

    exemple:
    http://maps.google.fr/

  10. #10
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Une form, un bouton, un TImage et le code ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    procedure TForm1.Button1Click(Sender: TObject);
    Var Can : TCanvas;
        BMP : TBitmap;
    begin
    Can := TCanvas.Create;
    Can.Handle := windows.GetWindowDC(0);
    BMP := TBitmap.Create;
    BMP.Width := 625;
    BMP.Height := 770;
    BMP.Canvas.CopyRect(Rect(0, 0, 625, 770), can, Rect(645, 245, 645+625, 245+770));
    Self.Image1.Picture.Bitmap.Assign(BMP);
    BMP.Free;
    Can.Free;
    end;
    A adapter a la resolution de l'ecran ..... je suis en 1280*1024
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  11. #11
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Je me propose de mettre cette idée ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.Button1Click(Sender: TObject);
    var
    MapsGoogle:TPicture;
    HandleDCBureau : HDC;
    begin
      MapsGoogle:=TPicture.Create;// Déclaration du Picture
      HandleDCBureau:=GetDC(GetDesktopWindow);
      MapsGoogle.Bitmap.Width := Screen.Width-300;
      MapsGoogle.Bitmap.Height := Screen.Height-150;
      BitBlt(MapsGoogle.Bitmap.Canvas.Handle,0,0,Screen.Width-300,Screen.Height-150,
    HandleDCBureau,300,150,SrcCopy);//recopie l'image du desktop vers MapsGoogle
      ReleaseDC(GetDesktopWindow,HandleDCBureau);
      MapsGoogle.SaveToFile('C:\toto.jpg');
    end;
    Qu'en pensez vous ??

    Biensur, il faut adapter à ta résolution comme te dis Clorish

    Merci

  12. #12
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    je test les deux cette nuit et je vous tiens au courant demain matin. En tout cas merci d'avance de votre gentillesse.

  13. #13
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par ero-sennin
    Je me propose de mettre cette idée ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [...]
      ReleaseDC(GetDesktopWindow,HandleDCBureau);
     [...]
    Qu'en pensez vous ??
    tiens ca me fait penser qu'il faut peut etre que je pense a liberer le DC retourné par windows ...... non
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  14. #14
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    peux tu m'expliquer cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BMP.Canvas.CopyRect(Rect(0, 0, 625, 770), can, Rect(645, 245, 645+625, 245+770));
    moi je suis en 1400 x 1050 alors c'est un peut différent mais j'aimerais comprendre le code pour que je puisse l'adapter à mon écran.

  15. #15
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
    MapsGoogle:TPicture;
    HandleDCBureau : HDC;
    begin
      MapsGoogle:=TPicture.Create;// Déclaration du Picture
      HandleDCBureau:=GetDC(GetDesktopWindow);
      MapsGoogle.Bitmap.Width := Screen.Width-300;
      MapsGoogle.Bitmap.Height := Screen.Height-300;
      BitBlt(MapsGoogle.Bitmap.Canvas.Handle,0,0,Screen.Width-300,Screen.Height-300,
    HandleDCBureau,330,540,SrcCopy);//recopie l'image du desktop vers MapsGoogle
      ReleaseDC(GetDesktopWindow,HandleDCBureau);
      MapsGoogle.SaveToFile('C:\toto.jpg');
    end;
    Moi j'ai mis cela est je recupere bien la photo mais en plus vers le bas j'ai ma barre des taches et du blanc ensuite... j'essaye aussi de comprendre ton code mais j'avoue que je met des chiffres un peu au hasard...!

  16. #16
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par KOUTO
    peux tu m'expliquer cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BMP.Canvas.CopyRect(Rect(0, 0, 625, 770), can, Rect(645, 245, 645+625, 245+770));
    moi je suis en 1400 x 1050 alors c'est un peut différent mais j'aimerais comprendre le code pour que je puisse l'adapter à mon écran.
    Simple

    BMP.canvas.copyrect : Focntion qui copie un rectangle d'un canevas source dans un rectagle sur le canevas du bmp. Donc en pratique, le contenu du canvas "ecran" (ie can) dans mon BMP.
    Rect(0, 0, 625, 770) : ca c'est les dimentions du rectangle sur le canvas de destination (bmp). Comme je veux le copier sur tout le canvas ... c'est de 0, 0,BMP.width, BMP.height.
    can : Sans commentaire ....
    Rect(645, 245, 645+625, 245+770) : PEtite bidouille a l'arach ... qui consiste a definir sur le canvas source (can) le rectangle a copier : j'ai reperer via un screenshot et un editeur de dessin, que sur mon ecran, la carte commence aux coords (645,245) et elle est de taille (625,770). Apres la somme pour les parametre right et left ... j'avais la flemme de le calculer C'est LEft+width
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  17. #17
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par KOUTO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
    MapsGoogle:TPicture;
    HandleDCBureau : HDC;
    begin
      MapsGoogle:=TPicture.Create;// Déclaration du Picture
      HandleDCBureau:=GetDC(GetDesktopWindow);
      MapsGoogle.Bitmap.Width := Screen.Width-300;
      MapsGoogle.Bitmap.Height := Screen.Height-300;
      BitBlt(MapsGoogle.Bitmap.Canvas.Handle,0,0,Screen.Width-300,Screen.Height-300,
    HandleDCBureau,330,540,SrcCopy);//recopie l'image du desktop vers MapsGoogle
      ReleaseDC(GetDesktopWindow,HandleDCBureau);
      MapsGoogle.SaveToFile('C:\toto.jpg');
    end;
    Moi j'ai mis cela est je recupere bien la photo mais en plus vers le bas j'ai ma barre des taches et du blanc ensuite... j'essaye aussi de comprendre ton code mais j'avoue que je met des chiffres un peu au hasard...!
    MapsGoogle.Bitmap.Width et Height c'est al taille de ta map sur l'ecran.
    BitBlt(MapsGoogle.Bitmap.Canvas.Handle,0,0,Screen.Width-300,Screen.Height-300,
    HandleDCBureau,330,540,SrcCopy);
    c'est la meme focntions que copyrect mais version windows .... le quartet de variable designe les positions Top/LEft/Width/Heig (ou Right/Left) des rectangles sources et dest .....

    Donc si tu as trop de données dans le fichier, il te faut reduire la hauteur et/ou la largeur. Voir meme le Top/left pour bien placer tes rectangles ....
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  18. #18
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Moui, moui, moui...

    mais le problême, c'est que c'est pas très légal tout ça les enfants...

    Il y a du copyright dans l'air
    Bidouilleuse Delphi

  19. #19
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    bha moi en ce qui me concerne je ne diffuser que des techniques connue, interessantes, generiques, et tout a fait legales

    Apres ... ce qu'on en fait ca ne me concerne plus
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] copie image dans une partie d'une autre image
    Par gz.yassine dans le forum WinDev
    Réponses: 6
    Dernier message: 16/05/2015, 21h30
  2. [WD14] Ascenseur sur une partie de la fenetre
    Par b_reda31 dans le forum WinDev
    Réponses: 12
    Dernier message: 26/01/2012, 13h40
  3. Copie d'écran - une variante
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 0
    Dernier message: 21/05/2008, 23h55
  4. Copie d'écran - une variante
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 0
    Dernier message: 21/05/2008, 23h55
  5. Gnuplot - tracer une fonction sur une partie de la fenetre
    Par IVIart1 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 07/01/2008, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo