4

Winform アプリケーションに追加した WPF コントロール (MapControl) のビジュアル コンテンツを印刷したいと考えています。

(基本的に、WPF ユーザー コントロールを任意のコントロールでコンパイルし、結果のコントロールを他のコントロールと同様に Winform プロジェクトに追加します。)

別のユーザーは基本的に、印刷部分を実行するためのコードをいくつか提供しました。参照: http://www.devexpress.com/Support/Center/Question/Details/Q386207

Winform 側で収集できるコードは次のとおりです。

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;
}

問題は、PageVisual が Winform 側に存在しないことです。それは明らかにWPFで行います。

同等のコードは何ですか?「MapContainer」の部分は問題ありません。欠けている唯一の成分は「e.what」メソッドですか?

参照/使用ペアを追加すると、PageVisual が存在する可能性はありますか?

DevExpress に連絡するよう誰かに頼まれる前に、私はすでにそれを試しました。彼らの回答は、その質問は彼らとは何の関係もなく、純粋な Microsoft.Net の質問であるため、ここでの質問であるというものでした。

そうそう、.Net 4.5 で Visual Studio 2012 を使用しています。

4

2 に答える 2

1

GDI を使用して WinForms で印刷しています。

コードは次のようになります (未テスト):

void PrintDoc_PrintPage(object sender, PrintPageEventArgs e)
{
    var bmp = new Bitmap(e.MarginBounds);
    MapContainer.DrawToBitmap(bmp, e.MarginBounds);
    e.Graphics.DrawImage(bmp, new Point(0, 0));
}

これが何かを示したら、スケーリングを調整する必要があります。とても楽しいかもしれません (そうではありません)。 PrintPreviewDialog を使用して用紙を節約してください。

于 2013-07-06T10:14:37.073 に答える