Je voudrais imprimer le contenu visuel d'un contrôle WPF (un MapControl) que j'ai ajouté à mon application Winform.Accéder à PrintPageEventArgs.PageVisual dans Winform ou son équivalent
(En gros, compilez un contrôle utilisateur WPF avec ce contrôle, puis ajouter le contrôle qui en résulte comme tout autre contrôle à votre projet Winform.)
Un autre utilisateur a essentiellement un code pour accomplir la partie d'impression. Voir: http://www.devexpress.com/Support/Center/Question/Details/Q386207
Le code que je pouvais rassembler dans le côté Winform devrait être:
private PrintDocument m_oPrintDoc;
public frmWhatever()
: base()
{
// This call is required by the Windows Form Designer.
InitializeComponent();
// Set up the printing
m_oPrintDoc = new PrintDocument();
m_oPrintDoc.PrintPage += PrintDoc_PrintPage;
}
void PrintDoc_PrintPage(object sender, PrintPageEventArgs e)
{
e.PageVisual = MapContainer;
}
Le problème est que PageVisual n'existe pas sur le côté Winform. C'est évidemment le cas dans WPF.
Quel serait le code équivalent? Je n'ai aucun problème avec la partie "MapContainer". Le seul ingrédient manquant est la méthode "e.what"?
Est-il possible que PageVisual existe si j'ajoute une paire de référence/en utilisant? Avant que quelqu'un ne me demande de contacter DevExpress, j'ai déjà essayé. Leur réponse a été que la question n'a rien à voir avec eux et est une pure question Microsoft.Net, d'où la question ici.
Oh oui, j'utilise Visual Studio 2012 avec .Net 4.5.
La réponse ci-dessus n'a pas fonctionné. Il n'y a pas de DrawToBitmap(). J'ai réussi à mettre en œuvre une sorte de solution de contournement pour obtenir le code ci-dessus, mais cela a juste donné la corbeille en tant que sortie. La réponse m'a cependant mis sur la bonne voie. Je vais créer une autre réponse avec le code réel qui résout le problème et publier sur DevExpress. –
DrawBitmap est une fonction GDI, l'ElementHost devrait l'avoir. Mais votre propre réponse donne probablement un meilleur bitmap. –