0

私はWPFアプリケーションを持っています。アプリケーションには 2 つの Web ページが埋め込まれています。スクリーンショットを撮ると、埋め込まれた Web ページを除くアプリケーション全体が表示されます。

Webページを含むスクリーンショットを撮る必要があります。誰かが私を案内してもらえますか..

ありがとう

4

2 に答える 2

0

このコードで試すことができます

/// Gets a JPG "screenshot" of the current UIElement
    ///
    /// UIElement to screenshot
    /// Scale to render the screenshot
    /// JPG Quality
    /// Byte array of JPG data
    public static byte[] GetJpgImage(this UIElement source, double scale, int quality)
    {
        double actualHeight = source.RenderSize.Height;
        double actualWidth = source.RenderSize.Width;

        double renderHeight = actualHeight * scale;
        double renderWidth = actualWidth * scale;

        RenderTargetBitmap renderTarget = new RenderTargetBitmap((int) renderWidth, (int) renderHeight, 96, 96, PixelFormats.Pbgra32);
        VisualBrush sourceBrush = new VisualBrush(source);

        DrawingVisual drawingVisual = new DrawingVisual();
        DrawingContext drawingContext = drawingVisual.RenderOpen();

        using (drawingContext)
        {
            drawingContext.PushTransform(new ScaleTransform(scale, scale));
            drawingContext.DrawRectangle(sourceBrush, null, new Rect(new Point(0, 0), new Point(actualWidth, actualHeight)));
        }
        renderTarget.Render(drawingVisual);

        JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
        jpgEncoder.QualityLevel = quality;
        jpgEncoder.Frames.Add(BitmapFrame.Create(renderTarget));

        Byte[] _imageArray;

        using (MemoryStream outputStream = new MemoryStream())
        {
            jpgEncoder.Save(outputStream);
            _imageArray = outputStream.ToArray();
        }

        return _imageArray;
    }
于 2012-09-25T18:03:05.693 に答える
0
try
    {
      // System.Drawing.Point p=new System.Drawing.Point(100,500);
        Bitmap b = new Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
        Graphics graphics=Graphics.FromImage(b as Image);
        graphics.CopyFromScreen(0,0,0,0,b.Size);

       string stringsFile=@"C:\Image1";

        b.Save(stringsFile,ImageFormat.Png);
     }
  catch (Exception exp)
      {
      Microsoft.Windows.Controls.MessageBox.Show("Opps !!! " + exp.Message);
      } 
于 2012-09-25T17:36:29.260 に答える