在 Windowsphone 8 中从没有 xaml 的 uicontrol 创建映像

本文关键字:xaml uicontrol 创建 映像 Windowsphone | 更新日期: 2023-09-27 18:32:19

我将网格作为图像保存到独立存储,以便可以在磁贴上使用。但是,这仅在网格在 xaml 中定义时才有效。在 C# 中创建时,实际高度和宽度始终为 0。我想从后台任务调用此方法来更新我的磁贴,但无法在那里定义 xaml。有没有办法解决这个问题?

public void SaveImageFromGrid(Grid g, string fileName)
    {
        int w = Convert.ToInt32(g.ActualWidth);
        int h = Convert.ToInt32(g.ActualHeight);
        WriteableBitmap wb = new WriteableBitmap(w, h);
        wb.Render(g, null);
        wb.Invalidate();
        using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (myIsolatedStorage.FileExists(fileName))
            {
                myIsolatedStorage.DeleteFile(fileName);
            }
            IsolatedStorageFileStream fileStream = myIsolatedStorage.CreateFile(fileName);
            StreamResourceInfo sri = null;
            Uri uri = new Uri(fileName, UriKind.Relative);
            sri = Application.GetResourceStream(uri);
            Extensions.SaveJpeg(wb, fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
            fileStream.Close();
        }
    }

在 Windowsphone 8 中从没有 xaml 的 uicontrol 创建映像

ActualWidthActualHeight是在渲染通道后计算的,并考虑了整体布局。由于您没有呈现网格,因此这些值将为零。如果我理解正确,您是以编程方式创建网格的,因此您可以简单地设置和使用WidthHeight值。