ghik
Messages postés3Date d'inscriptionjeudi 10 juillet 2008StatutMembreDernière intervention10 juillet 2008 10 juil. 2008 à 13:45
Même chose en tout simple et complet :
"
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
namespace MaCapture
{
class Grab
{
public Bitmap CaptureScreen()
{
Bitmap b = new Bitmap(
SystemInformation.VirtualScreen.Width,
SystemInformation.VirtualScreen.Height);
Graphics g = Graphics.FromImage(b);
g.CopyFromScreen(0, 0, 0, 0, b.Size);
g.Dispose();
return b;
}
}
}
"
ghik
Messages postés3Date d'inscriptionjeudi 10 juillet 2008StatutMembreDernière intervention10 juillet 2008 10 juil. 2008 à 13:10
Hello,
Nickel comme code, je vais essayer ça de suite.
Merci
SharpCoder
Messages postés1Date d'inscriptionvendredi 16 mai 2008StatutMembreDernière intervention 1 juillet 2008 1 juil. 2008 à 10:03
bonjour,
Comment faire pour ajouter ScreenLib comme référence à partir du fichier WindowsDesktops.cs ?
damned3
Messages postés22Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention18 décembre 2007 27 juin 2007 à 01:38
J'ai cherché à faire la même chose que HAGEN dernièrement et je suis arrivé à ça
(ça marche très bien) :
screenBmp = new Bitmap(width, height); // largeur et hauteur du rectangle que tu veux.
bmpGraphics = Graphics.FromImage(screenBmp);
bmpGraphics.CopyFromScreen(new Point(x, y), new Point(0, 0), new Size(width, height));
// encore la même largeur et hauteur, x et y sont les coordonnées du coin du
// rectangle dans l'écran.
Quant à GG00xiv, tu présentes une nouvelle façon de faire une vieille chose, ça mérite un 7/10
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 7 juil. 2005 à 23:14
hagen132456
Messages postés25Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 juillet 2005 6 juil. 2005 à 10:13
salut à tous.
moi aussi je suis dans la capture d'écran ;)
intéressant les remarques...
moi j'ai uen tute question:
GetDesktopWindow() c'est pas une méthode du framework???c vous qui la déclarer c tout car je la trouve pas ds msdn!
de plus moi j'ai un autre pblm:
la on récupère un screen complet!
moi je souhaiterais via deux point passé en paramètre de la méthode par example, tracé un rectangle qui délimiterai la zone de sscreen que ej souhaite récupérer.
en effet je dois récupérer un screen shot mais pas de l'écran complet, seulement une zone de l'écran et je n'y arrive pas!
kk1 à déjà réaliser cela ou pourrai me filer un ptit cou de pouce?
merci
bon courage
++
jf
LUDINSKI
Messages postés441Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention22 mai 20128 20 sept. 2004 à 17:08
Bravo, en tout cas !!
Il me fallait un moyen de capturer puis imprimer l'écran. Je pensais qu'une classe .Net existait, mais bon tampis !!
Bonne continuation !! 7/10
gg00xiv
Messages postés656Date d'inscriptionmercredi 22 août 2001StatutMembreDernière intervention11 mars 200513 14 mars 2004 à 12:43
Il est pas vide, il contient un fichier .cs, et ScreenLib est le nom du namespace contenant cette classe.
bucherb
Messages postés412Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention13 août 2007 13 janv. 2004 à 11:47
Je trouve pas ta librairie... ScreenLib.. tu la sors d'où?
bucherb
Messages postés412Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention13 août 2007 13 janv. 2004 à 11:43
Si il est 50% plus lent c'est qu'il est plus rapide non? ;-)
gg00xiv
Messages postés656Date d'inscriptionmercredi 22 août 2001StatutMembreDernière intervention11 mars 200513 6 déc. 2003 à 12:32
Je viens de tester le code présenté deux post au dessus, il est 50% plus lent que l'exemple entièrement API Windows que j'ai posté. Maintenant à qui voudra jugé de la simplicité de lecture plutot qu'aux performances ...
[DllImport("gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest,
int nXDest,
int nYDest,
int nWidth,
int nHeight,
IntPtr hdcSrc,
int nXSrc,
int nYSrc,
int dwRop
);
private const int SRCCOPY = 0xCC0020;
public static Bitmap GetScreenBitmap()
{
Graphics gScreen = Graphics.FromHwnd(GetDesktopWindow());
Bitmap bmpScreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height);
gg00xiv
Messages postés656Date d'inscriptionmercredi 22 août 2001StatutMembreDernière intervention11 mars 200513 3 déc. 2003 à 11:34
c optimal :)
sergebre
Messages postés10Date d'inscriptionvendredi 20 juin 2003StatutMembreDernière intervention26 décembre 2003 2 déc. 2003 à 23:23
c'est compliqué !
gg00xiv
Messages postés656Date d'inscriptionmercredi 22 août 2001StatutMembreDernière intervention11 mars 200513 1 déc. 2003 à 20:51
je suis pas tres claire effectivement, mais je ne parlerer pas de l'API windows sur ce site, c pas fe pour, regarde la msdn si t interesser par le code de la fonction. Je n'ai appris ces fonctions que pour faire une partie d'un projet plus important donc je suis pas tres bien calé la dedans.
J'ai poster surtout pour fournir une methode simple d'utilisation du screenshot memoire en .NET
Dereckson
Messages postés3Date d'inscriptionmercredi 12 novembre 2003StatutMembreDernière intervention 8 octobre 2006 1 déc. 2003 à 15:36
// 1) sa selectionne le bitmap passe en parametre
// 2) selectobject renvoi le handle du bitmap precedemment selectionne
// qui etait le bitmap par defaut (qui contient rien)
Tu peux faire un petit effort de français dans tes commentaires ? ;)
10 juil. 2008 à 14:32
10 juil. 2008 à 13:45
"
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
namespace MaCapture
{
class Grab
{
public Bitmap CaptureScreen()
{
Bitmap b = new Bitmap(
SystemInformation.VirtualScreen.Width,
SystemInformation.VirtualScreen.Height);
Graphics g = Graphics.FromImage(b);
g.CopyFromScreen(0, 0, 0, 0, b.Size);
g.Dispose();
return b;
}
}
}
"
10 juil. 2008 à 13:10
Nickel comme code, je vais essayer ça de suite.
Merci
1 juil. 2008 à 10:03
Comment faire pour ajouter ScreenLib comme référence à partir du fichier WindowsDesktops.cs ?
27 juin 2007 à 01:38
(ça marche très bien) :
screenBmp = new Bitmap(width, height); // largeur et hauteur du rectangle que tu veux.
bmpGraphics = Graphics.FromImage(screenBmp);
bmpGraphics.CopyFromScreen(new Point(x, y), new Point(0, 0), new Size(width, height));
// encore la même largeur et hauteur, x et y sont les coordonnées du coin du
// rectangle dans l'écran.
Quant à GG00xiv, tu présentes une nouvelle façon de faire une vieille chose, ça mérite un 7/10
7 juil. 2005 à 23:14
6 juil. 2005 à 10:13
moi aussi je suis dans la capture d'écran ;)
intéressant les remarques...
moi j'ai uen tute question:
GetDesktopWindow() c'est pas une méthode du framework???c vous qui la déclarer c tout car je la trouve pas ds msdn!
de plus moi j'ai un autre pblm:
la on récupère un screen complet!
moi je souhaiterais via deux point passé en paramètre de la méthode par example, tracé un rectangle qui délimiterai la zone de sscreen que ej souhaite récupérer.
en effet je dois récupérer un screen shot mais pas de l'écran complet, seulement une zone de l'écran et je n'y arrive pas!
kk1 à déjà réaliser cela ou pourrai me filer un ptit cou de pouce?
merci
bon courage
++
jf
20 sept. 2004 à 17:08
Il me fallait un moyen de capturer puis imprimer l'écran. Je pensais qu'une classe .Net existait, mais bon tampis !!
Bonne continuation !! 7/10
14 mars 2004 à 12:43
8 mars 2004 à 23:36
13 janv. 2004 à 11:47
13 janv. 2004 à 11:43
6 déc. 2003 à 12:32
Méthode de test :
private void button1_Click(object sender, System.EventArgs e)
{
DateTime tStart = DateTime.Now;
for (int i=0; i<100; i++)
{
Bitmap bmp = GetScreenBitmap();
bmp = null;
GC.Collect();
}
button1.Text = (DateTime.Now - tStart).TotalMilliseconds.ToString();
}
private void button2_Click(object sender, System.EventArgs e)
{
DateTime tStart = DateTime.Now;
for (int i=0; i<100; i++)
{
Image img = ScreenLib.WindowsDesktop.CaptureScreen();
img = null;
GC.Collect();
}
button2.Text = (DateTime.Now - tStart).TotalMilliseconds.ToString();
}
4 déc. 2003 à 01:07
3 déc. 2003 à 18:18
[DllImport("user32.dll")]
private static extern IntPtr GetDesktopWindow();
[DllImport("gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest,
int nXDest,
int nYDest,
int nWidth,
int nHeight,
IntPtr hdcSrc,
int nXSrc,
int nYSrc,
int dwRop
);
private const int SRCCOPY = 0xCC0020;
public static Bitmap GetScreenBitmap()
{
Graphics gScreen = Graphics.FromHwnd(GetDesktopWindow());
Bitmap bmpScreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height);
Graphics gBmp = Graphics.FromImage(bmpScreen);
IntPtr hDCScreen = gScreen.GetHdc();
IntPtr hDCBmp = gBmp.GetHdc();
BitBlt(hDCBmp,
0,
0,
Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
hDCScreen,
0,
0,
SRCCOPY);
gScreen.ReleaseHdc(hDCScreen);
gBmp.ReleaseHdc(hDCBmp);
return bmpScreen;
}
3 déc. 2003 à 11:34
2 déc. 2003 à 23:23
1 déc. 2003 à 20:51
J'ai poster surtout pour fournir une methode simple d'utilisation du screenshot memoire en .NET
1 déc. 2003 à 15:36
// 2) selectobject renvoi le handle du bitmap precedemment selectionne
// qui etait le bitmap par defaut (qui contient rien)
Tu peux faire un petit effort de français dans tes commentaires ? ;)