在WPF中将Grid元素转换为Image

时间:2014-07-28 11:33:02

标签: wpf xaml windows-phone-8

我有一个代码片段,当前以Grid格式返回。

private Grid GetImage(PlacemarkList locationDetail)
{
    Grid gridPushPin = new Grid();
    ImageBrush img = new ImageBrush();
    img.ImageSource = locationDetail.preferredCashback.Equals("1") ? new BitmapImage {         
                           UriSource = Constants.CashbackIconUri,
                           DecodePixelWidth = 36, 
                           DecodePixelHeight = 59 
                       } : new BitmapImage {
                           UriSource = Constants.ATMIconUri, 
                           DecodePixelWidth = 36, DecodePixelHeight = 59
                       };
    TextBlock IndexText = new TextBlock();
    IndexText.TextAlignment = TextAlignment.Center;
    IndexText.Text = locationDetail.IndexNum.ToString();
    gridPushPin.Background = img;
    gridPushPin.Tag = locationDetail.bankAddress;
    gridPushPin.Tap += grid_Tap;
    return gridPushPin;
}

但我想将网格作为图像返回(将我生成的网格转换为图像)。任何人都可以帮助如何实现这一目标。

4 个答案:

答案 0 :(得分:0)

您可以使用VisualBrush将任何UIElement的副本绘制到任何其他地方。这样的事情怎么样:

<Rectangle Width="150" Height="150">
    <Rectangle.Fill>
        <VisualBrush Visual="{Binding ElementName=NameOfYourGrid}" />
    </Rectangle.Fill>
</Rectangle>

答案 1 :(得分:0)

嘿,你检查过这个话题。我想你需要的就是这里。

How do I save all content of a WPF ScrollViewer as an image

答案 2 :(得分:0)

public class MyWrapperClass
{
    private DataGrid dataGrid;

    public MyWrapperClass(DataGrid grid)
    {
        this.dataGrid = grid;

    }

    public DataGrid MyGrid
    {
        get
        {
            return this.grid;
        }

        set
        {
            this.grid = value;
        }
    }

    public ImageBrush MyImageBrush
    {
        get 
        { 
            this.grid.Background as ImageBrush;
        }

        set 
        { 
            this.grid.Background = value; 
        }
    }
}

答案 3 :(得分:-1)

您正在创建一个Grid,因此您将返回一个Grid。

改为创建图片。类似的东西:

Image image = new Image();
image.Source = "myImageURL";

这是来自内存,因此实​​际代码可能会根据您需要做的事情而有所不同。

基本上,图片的Source需要与您在当前代码中设置ImageSource的方式类似,但您可以选择使用包网址来使用存储为而不是资源。

在评论中澄清之后进行编辑:因此您希望将网格控件作为图像进行控制。 This answer应该有所帮助。