Dessin Pixels dans WPF
comment pourrais-je gérer pixel-par-pixel rendering en WPF (comme, par exemple, pour un raytracer)? Mon estimation initiale était de créer un BitmapImage, de modifier la mémoire tampon, et d'afficher dans un contrôle Image, mais je ne pouvais pas comprendre comment créer une (la méthode de création nécessite un bloc de mémoire non géré)
Vous devez vous connecter pour publier un commentaire.
Je recommande fortement contre les deux précédentes suggestions. La classe WriteableBitmap fournit ce dont vous avez besoin en supposant que vous utilisez 3.5 SP1. Avant le SP1 il n'y a pas vraiment de bonne réponse à cette question dans WPF, sauf si vous recourir à certaines graves supercherie.
Si vous envisagez de faire quelque chose comme un traceur de rayon où vous aurez besoin de complot en beaucoup de points, vous aurez probablement envie de tirer dans le bitmap de l'espace mémoire directement au lieu de passer par les couches d'abstraction. Ce code vous donnera nettement mieux les temps de rendu, mais c'est au prix d'avoir besoin de "dangereux" de code, qui peut ou peut ne pas être une option pour vous.
Pour nettoyer la hBitmap vous devez déclarer à proximité de la tête de votre fichier de classe:
Notez également que vous devez définir les propriétés du projet pour permettre le code unsafe. Vous pouvez le faire par un clic droit sur le projet dans l'explorateur de solutions, puis en sélectionnant propriétés. Rendez-vous sur l'onglet créer. Cochez la case "Autoriser le code unsafe" boîte. Aussi je crois que vous aurez besoin d'ajouter une référence à System.De dessin.
vous pouvez placer 1X1 objets Rectangle sur une Toile de
Qui devrait être assez proche de ce que vous voulez
Vous pouvez ajouter des petits rectangles si vous voulez, mais chacune de celles-ci est une FrameworkElement, donc c'est probablement un peu lourd. L'autre option est de vous créer un DrawingVisual, tirer sur elle, la rendre ensuite le coller dans une image:
Voici une méthode à l'aide de WritableBitmap.
Et de l'utiliser: