4
似乎在用於Windows Phone的Silverlight的WriteableBitmap中存在一個非常惱人的bug。我有下面的代碼和XAML:在WP7上使用WriteableBitmap和RotateTransform呈現文本塊
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大不相同。有誰知道發生了什麼事?
我不認爲它是由對齊引起的。鑑於他們都是中心圖像應該給予其所需的大小,它應該像圖像源一樣大。但這是次要問題,我的主要問題是可寫位圖及其生成的PixelWidth和PixelHeight值,它們看起來不正確。我正在嘗試使用它們來查找已轉換元素的邊界框,但它似乎無法按預期工作。 – Viktor