0

サインを作成するWinformアプリケーションがあります。印刷する場合を除いて、すべてが機能し、正常に見えます。その上にテキストボックスが配置された画像があります。それらは私のコンピューターには表示されますが、印刷時には表示されません。どういうわけか、画像を印刷すると「前面に出た」状態になっていると思います。

以下は私の印刷機能です:

private void btnPrint_Click(object sender, EventArgs e)
    {
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += new PrintPageEventHandler(PrintImage);
        pd.Print();      
    }

    void PrintImage(object o, PrintPageEventArgs e)
    {
        int x = SystemInformation.WorkingArea.X;
        int y = SystemInformation.WorkingArea.Y;
        int width = this.Width;
        int height = this.Height; 

        Rectangle bounds = new Rectangle(x, y, width, height); 

        Bitmap img = new Bitmap(width, height); 

        this.DrawToBitmap(img, bounds);
        Point p = new Point(100, 100);
        e.Graphics.DrawImage(img, p);    
    }

印刷機能に原因があるかどうかはわかりませんが、他に何も考えられません。

4

1 に答える 1

0

TextBoxのコンテンツがレンダリングされない理由についての質問に対する答えはわかりませんが、「間違った」方法で行っていると言えます。

ペイントハンドラーでテキストをレンダリングし、単一の「インプレース」テキストボックスを使用して、ユーザーがフォーム上の特定の場所でテキストを編集できるようにします。このテキストは、所定の位置に移動され、ジャストインタイムで表示されます。編集用。

「ドキュメント」は、レンダリングでき、ユーザーがオブジェクトを操作しようとしたときに境界を検出できるオブジェクト(「テキストブロック」など)のリストで構成されている必要があります。これは、「ペイント」プログラムの動作と非常によく似ています。

これはあなたが今していることからの完全な逸脱になるでしょう。物事を「正しく」行うことは、常に多くの作業です。アプリケーションをやり直すように言いたくありません。これが学習体験であり、商用製品ではない場合は、使い慣れたものを使用して、それをハックしてもかまいません。しかし、次回は別のアプローチを試すかもしれません。

于 2012-07-17T20:08:49.650 に答える