Как получить изображение и сохранить его в папке [c # windows application] - PullRequest
2 голосов
/ 04 июля 2011

Я создаю приложение для Windows, используя c #. У меня есть кнопка, которая должна захватить изображение (весь экран рабочего стола) и сохранить его в папке. Также мне нужно показать предварительный просмотр изображения.

Ответы [ 3 ]

3 голосов
/ 04 июля 2011

Graphics.CopyFromScreen Метод

пример кода:

Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Size.Width, Screen.PrimaryScreen.Bounds.Size.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
g.Save();
bmp.Save("D:\\file.jpg", ImageFormat.Bmp);

как для предварительного просмотра.ИМО не так сложно написать это на твоем собственном.

1 голос
/ 04 июля 2011

Есть разные способы выполнить то, что вы приносите сюда. Используя класс Screen, я нашел несколько простых примеров в Интернете. Другие используют Direct3D.

  1. TeboScreen: базовое приложение C # для захвата экрана ;
  2. Снимок экрана ;
  3. C # - Снимок экрана с помощью Direct3D ;
  4. Экран захвата рабочего стола ;
  5. Расширенный настольный рекордер в .NET с использованием C # и Windows Forms ; (возможно, не подходит для вашего вопроса, но может стать интересным, если вы планируете дополнительные функции.)
  6. Захват изображения с экрана с помощью C # .

Короче говоря, идея состоит в том, чтобы получить изображение рабочего стола, используя класс Screen или ваш любимый способ, сохранить его в объекте Bitmap и сохранить это растровое изображение в файл.

Что касается отображения предварительного просмотра, то после создания экземпляра Bitmap вам просто нужно PictureBox, установить его свойство Image и показать свою форму пользователь, чтобы он мог видеть изображение.

Надеюсь, это поможет! =) * 1 047 *

0 голосов
/ 04 июля 2011

Вам потребуется выполнить импорт DLL-файлов Interop.

Взгляните на следующий пример очень хорошо показывает, как сделать снимок экрана и сохранить его на диск.

public void CaptureScreen(string fileName,ImageFormat imageFormat)
{
    int hdcSrc = User32.GetWindowDC(User32.GetDesktopWindow()),
    hdcDest = GDI32.CreateCompatibleDC(hdcSrc),
    hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc,
    GDI32.GetDeviceCaps(hdcSrc,8),GDI32.GetDeviceCaps(hdcSrc,10));                 GDI32.SelectObject(hdcDest,hBitmap);
    GDI32.BitBlt(hdcDest,0,0,GDI32.GetDeviceCaps(hdcSrc,8),
    GDI32.GetDeviceCaps(hdcSrc,10),hdcSrc,0,0,0x00CC0020);
    SaveImageAs(hBitmap,fileName,imageFormat);
    Cleanup(hBitmap,hdcSrc,hdcDest);
}

Приведенный выше пример взят с сайта.Весь код Перри Ли

...