从UIControl WPF创建WriteableBitmap

时间:2014-06-05 15:23:44

标签: c# wpf silverlight writeablebitmap

我目前正在将Silverlight应用程序转换为WPF。在我的silverlight应用程序中,我有代码

WriteableBitmap sceneBitmap = new WriteableBitmap(scene, new TranslateTransform() { Y = 10 });
WriteableBitmap newone = TimelineMainHelper.CropImage(sceneBitmap, 0, 0, sceneBitmap.PixelWidth, sceneBitmap.PixelHeight - 25);
newone.Invalidate();
img.Source = newone;

场景是控件。 将它放入WPF时,writeablebitmap类没有重载,它将UIElement和Transform作为参数。首先我想知道为什么会这样?其次,我想知道是否有办法控制可写的位图

1 个答案:

答案 0 :(得分:1)

相反,您会想要使用RenderTargetBitmapCroppedBitmap我相信:

RenderTargetBitmap rtb = new RenderTargetBitmap((int)scene.ActualWidth, (int)scene.ActualHeight, 96, 96, System.Windows.Media.PixelFormats.Pbgra32);
rtb.Render(this.sceneBitmap);

CroppedBitmap crop = new CroppedBitmap(sceneBitmap, new Int32Rect(0, 0, (int)sceneBitmap.ActualWidth, (int)sceneBitmap.ActualHeight));

然后你可以做类似的事情:

System.Windows.Controls.Image img = new Image();
img.Source = crop;

从那里开始。

<强>声明:

您可能需要使用不同的重载以及不能完全按照您的意愿执行的操作。我只是猜了一下你的片段会传递什么参数。