我有一个包含10多个项目的列表框,我编写了代码以在Windows Phone 8上对其进行屏幕截图并进行共享,但它只是将屏幕上显示的所有内容(3项)都显示为不完整的列表框。如何拍摄完整的Lisbox屏幕截图?这是我的代码。

var bmp = new WriteableBitmap(lbxDays, new TranslateTransform());
var width = (int)bmp.PixelWidth;
var height = (int)bmp.PixelHeight;
bmp.Render(lbxDays, new TranslateTransform());
using (var ms = new MemoryStream())
{
    bmp.SaveJpeg(ms, width, height, 0, 100);
    ms.Seek(0, System.IO.SeekOrigin.Begin);
    var lib = new MediaLibrary();
    var dateStr = DateTime.Now.Ticks;
    var picture = lib.SavePicture(string.Format("screenshot"+dateStr+".jpg"), ms);
    var task = new ShareMediaTask();
    task.FilePath = picture.GetPath();
    task.Show();
}

最佳答案

尝试使用此代码来获取控件的快照。将UIElement传递到所需的此方法。希望这能解决您的问题

private WriteableBitmap RenderControlAsImage(UIElement element)
{
    element.UpdateLayout();
    element.Measure(new Size(element.Width, element.Height));
    element.Arrange(new Rect(0, 0, element.Width, element.Height));
    return new WriteableBitmap(element, null);
}

关于c# - 如何拍摄完整的屏幕截图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13837148/

10-13 06:16
查看更多