如何从Rectangle创建图像

时间:2014-07-28 03:26:55

标签: windows-phone-8

我需要能够在Windows Phone应用程序中动态创建大小为400x400的图像,该应用程序将具有用户从颜色选择器中选择的ARGB值颜色。例如,用户将单击HyperlinkBut​​ton将它们带到ColorPickerPage然后将选择一种颜色,我将检索该值并从中创建图像,并将该图像显示在MainPage上。如果我从用户那里检索到ARGB值,那么这样的事情怎么可能完成呢?我没有幸运在这个特定问题上找到任何资源。

编辑**

我遇到了http://www.geekchamp.com/forums/windows-phone-development/how-to-correctly-save-uicontrol-with-opacity-to-writeablebitmap,它在屏幕上创建了一个矩形,然后保存到WriteableBitmap,但是我怎么能跳过这一步并将Rectangle保存到WriteableBitmap?请注意,我只有一个矩形,我用自定义颜色填充。

2 个答案:

答案 0 :(得分:0)

您是否尝试使用Drawing类。

这里是来自msdn。{/ p>的reference

以下是一些示例:System.Drawing and System.Drawing.Imaging alternatives for Windows Phone

http://code.msdn.microsoft.com/windowsapps/Multi-Touch-Drawing-744a0b48

希望它有所帮助!

答案 1 :(得分:0)

您可以使用以下代码将任何UI元素保存为图像。这里rect是XAML中矩形的名称。如果UI中没有矩形,则只需使用C#创建一个矩形。我添加了使用C#创建矩形的代码并对其进行了评论。

public void saveimage(int height, int width, String filename)
    {
        //Rectangle rect = new Rectangle();
        //rect.Height = 40;
        //rect.Width = 40;
        //rect.Fill = new SolidColorBrush(System.Windows.Media.Colors.Cyan); 
        var bmp = new WriteableBitmap(width, height);
        bmp.Render(rect, null);
        bmp.Invalidate();
        var isf = IsolatedStorageFile.GetUserStoreForApplication();
        if (!isf.FileExists(filename))
        {
            using (var stream = isf.OpenFile(filename, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite))
            {
                bmp.SaveJpeg(stream, width, height, 0, 100);
                stream.Close();
            }
        }
    }