1

だから私はPrintPageイベントのループで文字列を描画しようとしていますPrintDocument:

for (int c = 0; c < currentwords; c++)
{
    // index is a global int that starts at 0 and f9 is a font with size 9
    ev.Graphics.DrawString(allitems[index], f9, Brushes.Black, new Point(100, 100));
    // I used new Point(100, 100) for debugging purposes but normally I would
    // do some calculating to see where it is to be printed
    index++;
}

それはすべて正常なようで、デバッガーは、ブレークポイントを使用すると実行されることを示しますが、ドキュメントを表示すると表示されPrintPreviewDialogません。allitems[index] には値が含まれていますが、表示されない理由がわかりません。ループの外側に他の文字列と四角形を印刷していますが、それらはダイアログに表示されます。誰かが私を助けることができるなら、ここに投稿してください、ありがとう!

編集:

グラフィックモード/レンダリングのヒントは次のとおりです。

ev.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
ev.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
ev.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
ev.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
ev.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;

編集2:

さて、私は使用しました:

ev.Graphics.DrawString(allitems[0], f9, Brushes.Black, new Point(100, 100));
for (int c = 0; c < currentwords; c++)
{
    // index is a global int that starts at 0 and f9 is a font with size 9
    ev.Graphics.DrawString(allitems[index], f9, Brushes.Black, new Point(100, 100));
    // I used new Point(100, 100) for debugging purposes but normally I would
    // do some calculating to see where it is to be printed
    index++;
}

ループの外側だけDrawStringが表示されていましたが、ループは機能し、コードは実行されています。

4

2 に答える 2

0

したがって、次のように for ループで複数回描画している場合に問題があることがわかりました。

for (int c = 0; c < currentwords; c++)
{
    ev.Graphics.DrawString(allitems[index], f9, Brushes.Black, 100, 100);
    ev.Graphics.DrawString(allqty[index], f9, Brushes.Black, new Point(200, 200);
    ev.Graphics.DrawString((allprices[index].Contains('$')) ? allprices[index] : "$" + allprices[index], f9, Brushes.Black, 300, 300);
}

それらのいずれもまったく表示されません。これを修正するには、各DrawStringメソッドを別のループに入れる必要がありますが、そうしないと機能しない理由がわかりません。

于 2012-06-25T07:24:12.350 に答える
-1

ループ制御変数を「index」に変更します。あなたの間違いは、ループにループ制御変数を使用していないことです。

于 2013-03-09T08:47:59.000 に答える