Прокручиваемый элемент управления печатью С#

у меня есть элемент управления, который является плоттером, который можно прокручивать. После того, как плоттер закончит печать, он может прокручивать изображение следующим образом: введите здесь описание изображения

Мой плоттер работает в режиме реального времени, т.е. это означает, что он рисует с течением времени, а не статический плоттер (тот, который вы вводите значения вручную). После того, как я остановил плоттер, я могу прокрутить его, чтобы увидеть результаты. Однако я хочу сохранить плоттер в изображение, которое я пытаюсь сделать с помощью метода печати экрана. Но то, что я смог захватить, это только видимая часть плоттера, но не невидимая часть плоттера (потому что она нуждается в прокрутке). Надеюсь, теперь стало понятнее. Код для экрана печати:

// Set the bitmap object to the size of the screen
        bmpScreenshot = new Bitmap(panel2.Bounds.Width, panel2.Bounds.Height, PixelFormat.Format32bppArgb);
        // Create a graphics object from the bitmap
        gfxScreenshot = Graphics.FromImage(bmpScreenshot);

        Point p = this.PointToScreen(new Point(panel2.Bounds.X, panel2.Bounds.Y));
        gfxScreenshot.CopyFromScreen(p.X, p.Y, 0, 0,
                         panel2.Bounds.Size, CopyPixelOperation.SourceCopy);


        SaveFileDialog saveImageDialog = new SaveFileDialog();
        saveImageDialog.Title = "Select output file:";
        saveImageDialog.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
        if (saveImageDialog.ShowDialog() == DialogResult.OK)
        {
            bmpScreenshot.Save(saveImageDialog.FileName, ImageFormat.Jpeg);
        }

Большое спасибо.


person cnewbie    schedule 28.03.2011    source источник
comment
Код пожалуйста? Если это управляющий вызов, Invalidate в событиях прокрутки.   -  person Sanjeevakumar Hiremath    schedule 28.03.2011
comment
Вы имеете в виду, что когда вы прокручиваете элемент управления, вы видите пустое место? Какой код вы используете для рисования сюжета?   -  person Cody Gray    schedule 28.03.2011
comment
извините за путаницу. отредактировал мой вопрос.   -  person cnewbie    schedule 28.03.2011


Ответы (1)


Посмотрите здесь: http://www.eggheadcafe.com/community/aspnet/2/10201852/how-to-print-window-form-usig-cnet.aspx следует вызывать Win32 API PrintWindow.

person Davide Piras    schedule 28.03.2011
comment
ну, моя интерпретация его вопроса заключается в том, что он может рисовать то, что ему нужно, но он не может сделать экран печати невидимой области элемента управления, это интерпретация и может быть неправильной, но поскольку он говорит о экране печати в заглавие... - person Davide Piras; 28.03.2011
comment
справедливо, я пытаюсь подтолкнуть OP, чтобы задать лучший вопрос, чтобы избежать интерпретации :) Игнорируйте мои комментарии. - person Sanjeevakumar Hiremath; 28.03.2011
comment
Спасибо, Давиде, я обновил свой вопрос. Ваша интерпретация верна, однако ссылка, которую вы разместили, говорит о фактической «печати», которую я не хочу делать. - person cnewbie; 28.03.2011