4 votes

Rendu d'un bloc de texte avec WriteableBitmap et RotateTransform sur WP7

Il semble qu'il y ait un bug vraiment ennuyeux dans WriteableBitmap pour Silverlight pour Windows Phone. J'ai le code suivant et le 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));
    }
}

Voici le xaml :

Lorsque vous cliquez sur le bouton du bas, le bouton du haut est rendu avec le writeable bitmap en utilisant la transformation composite. Après chaque rendu, l'image résultante du bouton du haut est plus grande que la précédente. De plus, les valeurs des propriétés PixelWith et PixelHeight du writeable bitmap diffèrent considérablement de RenderSize de l'objet Image. Est-ce que quelqu'un a une idée de ce qui se passe ?

1voto

KooKiz Points 19056

Je ne comprends pas pleinement ce qu'il se passe, mais je crois que la taille des contrôles est ajustée en raison de l'alignement horizontal et vertical, et d'une certaine manière cela provoque le problème que vous avez mentionné.

Vous pouvez contourner cela en définissant la propriété Stretch du contrôle Image sur None. De cette manière, l'image affichée conservera toujours sa taille d'origine, peu importe la taille du contrôle de l'image.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X