Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запутался с printpreview 
:(
    Опции темы
shark1
Дата 2.9.2008, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Запутался с printpreview.
Есть такая задача.На форме имеется 3 richTextBox-а, и 3 pictureBox-а.Задача следующая:
Надо в шахмотном порядке раставить картинки и техт.Например:сверху картинка -хапротив коментарии,затем снизу коментарии напротив картинка и тд.Но почемуто у меня неполучается так распределить.Вопервых у меня почемуто текст выходит за граници листа,а должен как то окуратно групероватся напротив картинки.Подскажите плиззз,где я наделал ошибок.Зарание спасибо.
Вот пример кода:
Код

private void Print_Click(object sender, System.EventArgs e)
        {
            if (printDialog1.ShowDialog() == DialogResult.OK)
            {
                printDocument1.Print();
            }
        }
        
        // OnBeginPrint 
        private void OnBeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            char[] param = {'\n'};
            char[] param1 = {'\n'};
            char[] param2 = {'\n'};

            if (printDialog1.PrinterSettings.PrintRange == PrintRange.Selection)
            {
                lines = richTextBox1.SelectedText.Split(param);
                
            }
            else
            {
                lines = richTextBox1.Text.Split(param);
                
            }
            
            int i = 0;
            char[] trimParam = {'\r'};
            foreach (string s in lines)
            {
                lines[i++] = s.TrimEnd(trimParam);
                
            }

            if (printDialog1.PrinterSettings.PrintRange == PrintRange.Selection)
            {
                
                lines1 = richTextBox2.SelectedText.Split(param1);
               
            }
            else
            {
               
                lines1 = richTextBox2.Text.Split(param1);
                
            }
            int i1 = 0;
            char[] trimParam1 = { '\r' };
            foreach (string s1 in lines1)
            {
                lines1[i1++] = s1.TrimEnd(trimParam1);

            }

            if (printDialog1.PrinterSettings.PrintRange == PrintRange.Selection)
            {
                lines2 = richTextBox3.SelectedText.Split(param2);
            }
            else
            {
                lines2 = richTextBox3.Text.Split(param2);
            }
            int i2 = 0;
            char[] trimParam2 = { '\r' };
            foreach (string s2 in lines2)
            {
                lines2[i2++] = s2.TrimEnd(trimParam2);

            }
            
        }
   
        // OnPrintPage
        private void OnPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {

            //now draw our image
            if (this.pictureBox1.Image != null)
            {

                e.Graphics.DrawImage(this.pictureBox1.Image, 20, 80, this.pictureBox1.Size.Width, this.pictureBox1.Size.Height);

            }
            ///Top image - Logo
            if (this.pictureBox2.Image != null)
            {

                e.Graphics.DrawImage(this.pictureBox2.Image, 0, 0, this.pictureBox2.Size.Width, this.pictureBox2.Size.Height);

            }
            ///Bot image - Logo
            if (this.pictureBox3.Image != null)
            {

                e.Graphics.DrawImage(this.pictureBox3.Image, 0, 1050, this.pictureBox3.Size.Width, this.pictureBox3.Size.Height);

            }
            //int x = e.MarginBounds.Left;
            //int y = e.MarginBounds.Top;
            
          
            ///
            ///This insert text from richTextBox-1,2,3
            ///

            int x = 340;
            int y = 80;     
             
            Brush brush = new SolidBrush(richTextBox1.ForeColor);
            
            while (linesPrinted < lines.Length)
            {
                e.Graphics.DrawString (lines[linesPrinted++],
                    richTextBox1.Font, brush, x, y);
                //y += 15;
                if (y >= e.MarginBounds.Bottom)
                {
                    e.HasMorePages = true;
                    return;
                }
            }
            
            int x1 = 150;
            int y1 = 260;

            Brush brush1 = new SolidBrush(richTextBox2.ForeColor);

            while (linesPrinted1 < lines1.Length)
            {
                e.Graphics.DrawString(lines1[linesPrinted1++],
                    richTextBox2.Font, brush1, x1, y1);
                //y1 += 15;
                if (y1 >= e.MarginBounds.Bottom)
                {
                    e.HasMorePages = true;
                    return;
                }
            }

            int x2 = 250;
            int y2 = 520;

            Brush brush2 = new SolidBrush(richTextBox3.ForeColor);

            while (linesPrinted2 < lines2.Length)
            {
                e.Graphics.DrawString(lines2[linesPrinted2++],
                    richTextBox3.Font, brush2, x2, y2);
                //y2 += 15;
                if (y2 >= e.MarginBounds.Bottom)
                {
                    e.HasMorePages = true;
                    return;
                }
            }
            
            linesPrinted = 0;
            linesPrinted1 = 0;
            linesPrinted2 = 0;
            e.HasMorePages = false;
        }
        // Page Setup
        private void Setup_Click(object sender, System.EventArgs e)
        {
            
            // Call Dialog Box
            pageSetupDialog1.ShowDialog();
        }
        // Print Preview
        private void Preview_Click(object sender, System.EventArgs e)
        {
            /// Call Dialog Box              

            printPreviewDialog1.ShowDialog();
                }


Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  test.JPG 73,25 Kb
PM MAIL   Вверх
shark1
Дата 2.9.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Подскажите плизззз,неможет быть что никто никогда не делал рапорты или отчёты.Зарание огромное спасибо.
PM MAIL   Вверх
shark1
Дата 3.9.2008, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Ну подскажите плиззз хотябы как сделать чтоб текст неубегал за приделы листа.Зарание спасибо.
PM MAIL   Вверх
shark1
Дата 12.9.2008, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Здрасте всем.Помогите потомучто сам немогу справиться,залез в MSDN,полностью переделал код :

Код

private void btnPrintDialog_Click(object sender, System.EventArgs e) //btnPrintDialog.Click;
        {
            PrintDialog dialog = new PrintDialog();
            dialog.Document = pdoc;
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                pdoc.Print();
            }

        }
        private void btnPrintPreview_Click(object sender, System.EventArgs e) //btnPrintPreview.Click;
        {
            PrintPreviewDialog ppd = new PrintPreviewDialog();


            try
            {

                ppd.Document = pdoc;
                ppd.ShowDialog();
            }
            catch
            {

                MessageBox.Show("An error occurred while trying to load the " +
                    "document for Print Preview. Make sure you currently have " +
                    "access to a printer. A printer must be connected and " +
                    "accessible for Print Preview to work.", this.Text,
                    MessageBoxButtons.OK, MessageBoxIcon.Error);

            }

        }
        private void btnPageSetup_Click(object sender, System.EventArgs e) //btnPageSetup.Click;
        {
            PageSetupDialog psd = new PageSetupDialog();
            psd.Document = pdoc;
            psd.PageSettings = pdoc.DefaultPageSettings;

            if (psd.ShowDialog() == DialogResult.OK)
            {
                pdoc.DefaultPageSettings = psd.PageSettings;
            }
        }
        static int intCurrentChar;

        private void pdoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            if (ckb_Letter.Checked == true)
            {
                this.pictureBox2.Hide();
                this.pictureBox3.Hide();

                e.Graphics.DrawImage(this.pictureBox4.Image, 15, 15, this.pictureBox4.Size.Width, this.pictureBox4.Size.Height);
                e.Graphics.DrawImage(this.pictureBox5.Image, 425, 325, this.pictureBox5.Size.Width, this.pictureBox5.Size.Height);
                txtDocument.Text = "";
            }
            else 
            {
                if (this.pictureBox2.Image != null)
                {

                    e.Graphics.DrawImage(this.pictureBox2.Image, 15, 15, this.pictureBox2.Size.Width, this.pictureBox2.Size.Height);

                }
                ///Bot image - Logo
                if (this.pictureBox3.Image != null)
                {
                    //Format A4
                    //e.Graphics.DrawImage(this.pictureBox3.Image, 345, 1045, this.pictureBox3.Size.Width, this.pictureBox3.Size.Height);
                    e.Graphics.DrawImage(this.pictureBox3.Image, 340, 950, this.pictureBox3.Size.Width, this.pictureBox3.Size.Height);

                }
            
            }
            
            // Initialize the font to be used for printing.

            Font font = new Font("Microsoft Sans Serif", 13);
            int intPrintAreaHeight;
            int intPrintAreaWidth ;
            int marginLeft;
            int marginTop;
            int marginRight = 100;
            int marginBottom = 145;

            
            intPrintAreaHeight = pdoc.DefaultPageSettings.PaperSize.Height - pdoc.DefaultPageSettings.Margins.Top - pdoc.DefaultPageSettings.Margins.Bottom;
            intPrintAreaWidth = pdoc.DefaultPageSettings.PaperSize.Width - pdoc.DefaultPageSettings.Margins.Left - pdoc.DefaultPageSettings.Margins.Right;
            
            marginLeft = pdoc.DefaultPageSettings.Margins.Right; // X coordinate
            marginTop = pdoc.DefaultPageSettings.Margins.Bottom; // Y coordinate
            if (pdoc.DefaultPageSettings.Landscape)
            {
                int intTemp = intPrintAreaHeight;
                intPrintAreaHeight = intPrintAreaWidth;
                intPrintAreaWidth = intTemp;
            }
            
            int intLineCount = (int)(intPrintAreaHeight / font.Height);

          
            RectangleF rectPrintingArea = new RectangleF(marginRight, marginBottom, intPrintAreaWidth, intPrintAreaHeight);
            

            StringFormat fmt = new StringFormat(StringFormatFlags.LineLimit);
            
                int intLinesFilled;
                int intCharsFitted;

                e.Graphics.MeasureString(txtDocument.Text.Substring(intCurrentChar), font, new SizeF(intPrintAreaWidth, intPrintAreaHeight), fmt, out intCharsFitted, out intLinesFilled);

               
                e.Graphics.DrawString(txtDocument.Text.Substring(intCurrentChar), font, Brushes.Black, rectPrintingArea, fmt);
              
                

                intCurrentChar += intCharsFitted;

              
                if (intCurrentChar < (txtDocument.Text.Length - 1))
                {
                    e.HasMorePages = true;
                }
                else
                {
                    e.HasMorePages = false;
                                      intCurrentChar = 0;
                }
            }



но вот так и несмог сделать так чтоб текст незаходил на нижнюю картинку,немогу понять как это делается.И еще вот такая задача.Например есть несколько textbox-ов в одном имя,во втором адресс,в третьем телефон,как вывести эту информацию на конверт.Размер конверта(10.4х24.1cm)нужно чтоб инфа была по центру,неполучается ..... Подскажите плизззззззззз.Зарание спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0863 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.