2011-01-12 32 views
5

Có thể chụp ảnh màn hình điều khiển trong biểu mẫu thắng mà không thực sự hiển thị trên màn hình không? Làm thế nào về một thành phần webBrowser?ảnh chụp màn hình của điều khiển winforms thông qua C#

+0

Tôi phải hỏi - đó là một câu hỏi thú vị, nhưng trong lý do tại sao bạn lại phải cần để làm điều này? Tôi thực sự tò mò, không làm cho niềm vui của câu hỏi .... – David

+0

tôi cần để có thể gửi ảnh chụp màn hình của mét điều khiển đồ họa bất cứ khi nào tiêu chí nhất định được đáp ứng .. – user441660

+0

hiển thị các điều khiển cho một số đối tượng chỉ để có một ảnh chụp có thể không được một ý tưởng tốt .. nó sẽ được tốt đẹp nếu tôi có thể đặt chúng trên một điều khiển người dùng, lấy ảnh chụp của nó trong nền và gửi nó như là một hình ảnh .. – user441660

Trả lời

11

Có. Điều này có thể thực hiện được.

Tôi đã bỏ qua một chương trình mẫu để làm điều đó. Hãy tha thứ cho các quy ước đặt tên và tổ chức mã của tôi, điều này đã được thực hiện rất nhanh chóng. Bạn có thể sửa đổi nó để phù hợp hơn với nhu cầu của bạn, nhưng điều này cho thấy những điều cơ bản.

Tôi có một hình thức duy nhất với ba điều khiển:

  • button1: Nút với các thiết lập mặc định.
  • button2: Nút có thuộc tính Có thể nhìn thấy được đặt thành false và Tập văn bản thành "nút2 - không hiển thị"
  • webBrowser1: Điều khiển trình duyệt web với chế độ hiển thị được đặt thành false, đặt kích thước thành 250, 101 (chỉ để nó vừa với . vào mẫu của tôi Kích thước phù hợp khi bạn nhìn vào ảnh chụp ở dưới cùng của câu trả lời của tôi bạn sẽ cần phải đặt kích cỡ phù hợp)

đây là mã trong Form1:..

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Drawing.Imaging; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 

      PrintInvisibleControl(button2, @"C:\button.jpg"); 
      PrintInvisibleControl(webBrowser1, @"C:\webbrowser.jpg"); 


     } 

     private void PrintInvisibleControl(Control myControl, string filename) 
     { 

      Graphics g = myControl.CreateGraphics(); 
      //new bitmap object to save the image   
      Bitmap bmp = new Bitmap(myControl.Width, myControl.Height); 
      //Drawing control to the bitmap   
      myControl.DrawToBitmap(bmp, new Rectangle(0, 0, myControl.Width, myControl.Height)); 
      bmp.Save(filename, ImageFormat.Jpeg); 
      bmp.Dispose(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      webBrowser1.Navigate("http://www.microsoft.com"); 
     } 

    } 
} 

Điều này dẫn đến các hình chụp sau:

alt text

alt text

+4

Một cái gì đó không rõ ràng với tôi. 'Graphics g = myControl.CreateGraphics();' được sử dụng như thế nào? – beppe9000

Các vấn đề liên quan