2011-01-12 38 views
5

Gerçekten ekranda görüntülemeden winforms bir kontrol ekran görüntüsü almak mümkün mü? Bir webBrowser bileşeni hakkında nasıl?bir winforms kontrol ekran görüntüsü C#

+0

ben sormak zorunda? Ben gerçekten merak ediyorum, soruyu dalga geçme değil .... – David

+0

Belirli kriterler karşılandığında her zaman grafik kontrol metre ekran görüntüsü göndermek gerekir .. – user441660

+0

sadece bir anlık görüntü almak için çeşitli nesneler için bu denetimleri gösteriliyor olabilir iyi bir fikir .. onları bir kullanıcı kontrolüne yerleştirebilirsem, arka plandaki fotoğrafını çekip görüntü olarak gönderirsem güzel olurdu .. – user441660

cevap

11

Evet. Bu yapılabilir.

Bunu yapmak için bir örnek program çektim. Adlandırma kurallarını ve kod düzenimi bağışla, bu çok hızlı bir şekilde çırpıldı. Gereksinimlerinize daha iyi uyacak şekilde değiştirebilirsiniz, ancak bu temelleri gösterir.

  • button1: varsayılan ayarlarla Düğme

    Üç kontrolleri ile tek form var.
  • button2: false görünür özellik kümesi ve set Metin ile Düğme için "button2 - görünmeyen"
  • webBrowser1: false olarak ayarlanmış görünürlük ile WebBrowser denetimi, uyuyor sadece bu yüzden 250, 101 (için boyutunu ayarlamak . benim cevabın altındaki yakalama baktığınızda benim form üzerinde boyut alakalı buna göre boyutu o gerekir) burada

Form1 kod:..

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"); 
     } 

    } 
} 

Bu aşağıdaki yakalamalar ile sonuçlandı:

İlginç bir soru, fakat içinde Böyle bir işlem yapmanız gerekir neden -

alt text

alt text

+4

Bir şey bana açık değil. Grafik g = myControl.CreateGraphics(); nasıl kullanılır? – beppe9000