看起来,在Windows Phone的Silverlight中存在一个非常让人烦恼的WriteableBitmap bug。以下是我的代码和XAML:
public partial class MainPage : PhoneApplicationPage
{
CompositeTransform rotate = new CompositeTransform();
public MainPage()
{
InitializeComponent();
}
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.rotate.Rotation += 15;
WriteableBitmap bmp = new WriteableBitmap(this.button, rotate);
this.image.Source = bmp;
Dispatcher.BeginInvoke(() => Debug.WriteLine("{0}, {1}", bmp.PixelWidth, bmp.PixelHeight));
}
}
这是XAML代码:
<Grid>
<Button VerticalAlignment="Top"
HorizontalAlignment="Center"
Content="This is a textblock inside a layout"
x:Name="button"/>
<Image VerticalAlignment="Center"
HorizontalAlignment="Center"
x:Name="image"/>
<Button VerticalAlignment="Bottom"
Content="Rotate"
Click="Button_Click"/>
</Grid>
当您点击底部按钮时,使用合成变换将可写位图渲染为顶部按钮。每次渲染后,顶部按钮的结果图像比以前的大。此外,可写位图的PixelWith和PixelHeight属性值与Image对象的RenderSize值相差很大。有人知道发生了什么吗?