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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сохранить содержание контролов на форме в jpeg 
V
    Опции темы
shark1
Дата 18.11.2008, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вобщем задача такая,на форме есть разные текст контролы,текст боксы и тд.В них находится какая то информация,как возможно сохранить в картинку всё содержимое формы,но только чтоб было как на printpreview,чтоб всё было на своих местах.Спасибо.
PM MAIL   Вверх
shark1
Дата 18.11.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вопрос снят.Спасибо.
PM MAIL   Вверх
Certain
Дата 18.11.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А со всеми поделиться?  smile 
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
shark1
Дата 18.11.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я делал вот так :
Код

ImageFormat format = ImageFormat.Jpeg;
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "JPEG Files(*.jpg)|*.jpg";

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                // Save Form in file jpeg
                Bitmap bitmap = new Bitmap(this.Width=590, this.Height=770);
                this.DrawToBitmap(bitmap, new Rectangle(0, 0, this.Width, this.Height));
                bitmap.Save(sfd.FileName, format);
                bitmap.Dispose();
            }

но так как бы не очень красиво,потому что видно и форму тоже,а надо било сделать чтоб jpeg выглядел ка на printpreview.Вот код :
Код

[DllImport("gdi32.dll")]
        private static extern bool BitBlt(
        IntPtr hdcDest,  //  handle  to  destination  DC    
        int nXDest,  //  x-coord  of  destination  upper-left  corner    
        int nYDest,  //  y-coord  of  destination  upper-left  corner    
        int nWidth,  //  width  of  destination  rectangle    
        int nHeight,  //  height  of  destination  rectangle    
        IntPtr hdcSrc,  //  handle  to  source  DC    
        int nXSrc,  //  x-coordinate  of  source  upper-left  corner    
        int nYSrc,  //  y-coordinate  of  source  upper-left  corner    
        System.Int32 dwRop  //  raster  operation  code    
        );

        private const Int32 SRCCOPY = 0xCC0020;

        private Bitmap memImage;

        private void PrepareImage()
        {
            Graphics graphic = this.CreateGraphics();
            Size s = this.Size;
            memImage = new Bitmap(s.Width, s.Height, graphic);
            Graphics memGraphic = Graphics.FromImage(memImage);
            IntPtr dc1 = graphic.GetHdc();
            IntPtr dc2 = memGraphic.GetHdc();
            BitBlt(dc2, 0, 0, this.ClientRectangle.Width,
            this.ClientRectangle.Height, dc1, 0, 0, SRCCOPY);
            graphic.ReleaseHdc(dc1);
            memGraphic.ReleaseHdc(dc2);

            ImageFormat format = ImageFormat.Jpeg;
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "JPEG Files(*.jpg)|*.jpg";

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                memImage.Save(sfd.FileName,format);
                memImage.Dispose();
            }
            
        }

        private void printDocument2_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(memImage, 0, 0);    
        }

        private void button1_Click(object sender, EventArgs e)
        {                   
                
            PrepareImage();
            //printDocument2.Print(); - если это открыть то будет ещё и выводить на печать   
        }    

только сразу предупреждаю что сзади картинки видно черный background,тоже не 100% вариант,но это лучше.Если получится убрать background,поделитесь как сделали.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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