Windows Phone 용 Silverlight 용 WriteableBitmap에는 정말 귀찮은 버그가있는 것으로 보입니다. 여기 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>
, 상단 버튼을 복합 변환을 사용하여 쓰기 가능한 비트 맵 렌더링 다음 코드와 XAML 있습니다. 모든 렌더링 후에 상단 버튼의 결과 이미지가 이전 버튼보다 큽니다. 또한 쓰기 가능한 비트 맵의 PixelWith 및 PixelHeight 속성 값은 Image 개체의 RenderSize와 크게 다릅니다. 아무도 무슨 일이 일어나고 있는지 전혀 모른다.
나는 그것이 정렬에 의한 것이라고 생각하지 않습니다. 둘 다 중심 인 경우 이미지에 원하는 크기가 주어져야하며 이미지 소스와 마찬가지로 크기가 커야합니다. 하지만이 사소한 문제입니다, 내 주요 문제는 쓰기 가능한 비트 맵 및 결과 PixelWidth 및 PixelHeight 값, 그들은 틀린 것처럼 보입니다. 변환 된 요소의 바운딩 박스를 찾기 위해 그것들을 사용하려하지만, 예상했던대로 작동하지 않는 것 같습니다. – Viktor