Je veux créer une sorte de simulation. Il y aura de nombreux sprites flottant autour. Parce que je pense que rendre chaque image mille fois les mêmes primitives qui composent un sprite, sera lent, je veux les rendre une fois dans un bitmap et ensuite montrer ce sprite à chaque image.WPF: Bitmap ne montre pas
Mais cela ne semble pas fonctionner, l'écran reste blanc.
source de mon WPF est trivial:
<Window x:Class="WPFGraphicsTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="800" Width="1000">
<Canvas>
</Canvas>
</Window>
Et voici mon code:
public partial class MainWindow : Window
{
Ellipse e;
RenderTargetBitmap bmp2;
public MainWindow()
{
InitializeComponent();
e = new Ellipse();
e.Width = 40;
e.Height = 40;
e.Fill = new SolidColorBrush(Color.FromRgb(0, 0, 200));
((Canvas)this.Content).Children.Add(e);
((Canvas)this.Content).Measure(new Size(1000, 800));
((Canvas)this.Content).Arrange(new Rect(new Size(1000, 800)));
RenderTargetBitmap bmp2 = new RenderTargetBitmap(40, 40, 96, 96, PixelFormats.Pbgra32);
bmp2.Render(e);
((Canvas)this.Content).Children.Remove(e);
}
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
drawingContext.DrawImage(bmp2, new Rect(100,100, 40, 40));
}
}
Pourquoi pas ce travail?
Merci pour la réponse, mais votre code rend l'ellipse à chaque image. Je veux rendre l'ellipse une fois dans un bitmap, puis chaque image dessine juste le bitmap. – codymanix
@codymanix, en utilisant cet exemple, vous pouvez obtenir le bitmap à rendre. Fondamentalement, le code dans le _timer_Tick est ce que vous devez rendre à l'image bitmap. Si vous voulez le faire une seule fois, vous pouvez décaler ce code de la fonction _timer_Tick. J'ai simplement inclus cela dans l'exemple afin que vous puissiez voir que la mise à jour de l'image bitmap est affichée à l'écran. –
OK merci, ça va marcher. Mais cela signifie que je dois créer un objet Image pour chaque sprite que je veux dessiner. N'est-il pas possible de dessiner des images à la volée? Quel était le problème avec mon code, n'est-ce pas censé fonctionner? – codymanix