Снимок экрана с OpenNetCF - Отсутствует заголовок/заголовок страницы

Я тестирую несколько реализаций функции захвата экрана в Windows Mobile.

Используя SO, я нахожу следующий метод @ctacke с использованием библиотеки OpenNetCF.Drawing (http://blog.opennetcf.com/2009/03/11/screen-capture-in-the-compact-framework/):

// create a bitmap and graphics objects for the capture
Drawing.Bitmap destinationBmp = new Drawing.Bitmap(Forms.Screen.PrimaryScreen.Bounds.Width, Forms.Screen.PrimaryScreen.Bounds.Height);
Drawing.Graphics g = Drawing.Graphics.FromImage(destinationBmp);
GraphicsEx gx = GraphicsEx.FromGraphics(g);

// capture the current screen
gx.CopyFromScreen(0, 0, 0, 0, Forms.Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);

// save the file
destinationBmp.Save(filename, System.Drawing.Imaging.ImageFormat.Png);

// clean house
gx.Dispose();
g.Dispose();
destinationBmp.Dispose();

Я попытался протестировать этот метод на простом приложении на эмуляторе VGA Windows Mobile 6.5 и получил автоматический результат:

Сохраненное изображение имеет правильный размер (480 x 640), но содержимое не является полной копией моего экрана: часть заголовка отсутствует, а нижняя часть "зачернена" (отсутствующие пиксельные линии черные).< /сильный>

Попробовал эмулятор Windows Mobile 6, та же проблема. Как получить весь экран?


person Nicolas R    schedule 01.09.2014    source источник


Ответы (1)


Мне удалось найти решение, изменив поля X и Y из вызова CopyFromScreen, используя свойства PrimaryScreen.WorkingArea:

gx.CopyFromScreen(-Forms.Screen.PrimaryScreen.WorkingArea.X, -Forms.Screen.PrimaryScreen.WorkingArea.Y, 0, 0, Forms.Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);

Отредактировав эту строку таким образом, я получил весь экран.

person Nicolas R    schedule 01.09.2014