加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-phone-7 – 在WP7上使用WriteableBitmap和RotateTransfo

发布时间:2020-12-14 05:41:16 所属栏目:Windows 来源:网络整理
导读:似乎在Silverlight for Windows Phone的WriteableBitmap中存在一个非常烦人的错误.我有以下代码和xaml: public partial class MainPage : PhoneApplicationPage{ CompositeTransform rotate = new CompositeTransform(); public MainPage() { InitializeCom
似乎在Silverlight for Windows Phone的WriteableBitmap中存在一个非常烦人的错误.我有以下代码和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差别很大.有谁知道发生了什么事?

解决方法

我不完全理解发生了什么,但我相信控制尺寸是由于水平和垂直对齐而调整的,并且它会以某种方式导致您提到的问题.

您可以通过将Image控件的Stretch属性设置为None来绕过它.这样,无论图像控制的大小如何,显示的图像将始终保持其原始大小.

<Image  VerticalAlignment="Center"
                HorizontalAlignment="Center"
                Stretch="None"
                x:Name="image"/>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读