0

C# で Windows フォームの一部の領域に含まれるデータを印刷したいと考えています。これは、プレビュー ボタンをクリックしたときに呼び出される DrawAll() メソッドです。その部分のデータのみを背景画像なしで印刷したいと考えています。しかし、それは正しいフォーマットを与えません、これは正しいフォーマットです

ここに画像の説明を入力

これは私が得たものです

ここに画像の説明を入力

これは DrawAll メソッドです

` private void DrawAll(Graphics g) {

       // RectangleF srcRect = new RectangleF(0, 0, this.pictureBox1.Width,       this.pictureBox1.Height);
        Rectangle srcRect=new Rectangle(0,0,this.pictureBox1.Width,this.pictureBox1.Height);
        int nWidth = printDocument1.PrinterSettings.DefaultPageSettings.PaperSize.Width;
        int nHeight = printDocument1.PrinterSettings.DefaultPageSettings.PaperSize.Height;
        Rectangle destRect = new Rectangle(0, 0, nWidth, nHeight /3);
       // Rectangle drawRect = (Rectangle)destRect.;
       // g.DrawImage(this.pictureBox1.BackgroundImage, destRect, srcRect,   GraphicsUnit.Pixel);
         Pen aPen = new Pen(Brushes.Black, 1);
         g.DrawRectangle(aPen,destRect);

        float scalex = destRect.Width / srcRect.Width;
        float scaley = destRect.Height / srcRect.Height;

       // Pen aPen = new Pen(Brushes.Black, 1);
        for (int i = 0; i < this.Controls.Count; i++)
        {
            if (Controls[i].GetType() == this.paytext.GetType())
            {
                TextBox theText = (TextBox)Controls[i];
                g.DrawString(theText.Text, theText.Font, Brushes.Black, theText.Bounds.Left * scalex, theText.Bounds.Top * scaley, new StringFormat());
            }
            if (Controls[i].GetType() == this.label4.GetType())
            {
                Label theTextlbl = (Label)Controls[i];
                g.DrawString(theTextlbl.Text, theTextlbl.Font, Brushes.Black, theTextlbl.Bounds.Left * scalex, theTextlbl.Bounds.Top * scaley, new StringFormat());
            }
            if (Controls[i].GetType() == this.dateTimePicker1.GetType())
            {
                DateTimePicker theDate = (DateTimePicker)Controls[i];
                g.DrawString(theDate.Text, theDate.Font, Brushes.Black, theDate.Bounds.Left * scalex, theDate.Bounds.Top * scaley, new StringFormat());
            }
        }
    }`
4

0 に答える 0