WP7: взять скриншот из приложения - PullRequest
2 голосов
/ 05 апреля 2011

Как я могу взять скриншот из кода?

Ответы [ 5 ]

4 голосов
/ 05 апреля 2011

Сделать скриншот вашего приложения из кода приложения очень просто, используя WriteableBitmap. У Лорана Бюньона есть хорошая запись здесь: http://geekswithblogs.net/lbugnion/archive/2010/12/28/taking-a-screenshot-from-within-a-silverlight-wp7-application.aspx

2 голосов
/ 23 мая 2012

Создание скриншота из приложения Silverlight # WP7.

public static void SaveToMediaLibrary(
FrameworkElement element, 
string title)
{
try
{
    var bmp = new WriteableBitmap(element, null);

    var ms = new MemoryStream();
    bmp.SaveJpeg(
        ms,
        (int)element.ActualWidth,
        (int)element.ActualHeight,
        0,
        100);
    ms.Seek(0, SeekOrigin.Begin);

    var lib = new MediaLibrary();
    var filePath = string.Format(title + ".jpg");
    lib.SavePicture(filePath, ms);

    MessageBox.Show(
        "Saved in your media library!",
        "Done",
        MessageBoxButton.OK);
}
catch
{
    MessageBox.Show(
        "There was an error. Please disconnect your phone from the computer before saving.",
        "Cannot save",
        MessageBoxButton.OK);
}}
2 голосов
/ 05 апреля 2011

Отметьте здесь , это кажется возможным на эмуляторе.

1 голос
/ 05 апреля 2011

Вот как вы можете сделать снимок экрана из своего приложения из кода вашей страницы и сохранить его в библиотеке изображений вашего телефона.Обратите внимание, что это не будет захватывать SysTray или AppBar:

WriteableBitmap w = new System.Windows.Media.Imaging.WriteableBitmap(this, null); // 'this' is your current page
WriteableBitmap w2 = new System.Windows.Media.Imaging.WriteableBitmap(480, 800);

// space for SysTray
for (int i = 0; i < 32; i++)
{
    for (int j = 0; j < 480; j++)
    {
        w2.Pixels[i * 480 + j] = -16777216; // black #ff000000
    }
}

// actual client area
for (int i = 32; i < 728; i++)
{
    for (int j = 0; j < 480; j++)
    {
        w2.Pixels[i * 480 + j] = w.Pixels[(i - 32) * 480 + j];
    }
}

// space for AppBar
for (int i = 728; i < 800; i++)
{
    for (int j = 0; j < 480; j++)
    {
        w2.Pixels[i * 480 + j] = -16777216; // black #ff000000
    }
}
MemoryStream ms = new MemoryStream();
w2.SaveJpeg(ms, 480, 800, 0, 100);
Microsoft.Xna.Framework.Media.MediaLibrary lib = new Microsoft.Xna.Framework.Media.MediaLibrary();
ms.Position = 0;
lib.SavePicture("screenshot", ms);
0 голосов
/ 05 апреля 2011

Ты не можешь бояться. Если вам нужны скриншоты, вы должны сделать их снаружи, используя что-то вроде отсекающего инструмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...