2011-01-12 17 views
5

के माध्यम से एक विनफॉर्म नियंत्रण का स्क्रीनशॉट क्या वास्तव में स्क्रीन पर इसे प्रदर्शित किए बिना Winforms में नियंत्रण का स्क्रीनशॉट प्राप्त करना संभव है? एक WebBrowser घटक के बारे में कैसे?सी #

+0

मैं पूछने के लिए है? मैं वास्तव में उत्सुक हूं, प्रश्न का मजाक नहीं बना रहा हूं .... – David

+0

जब भी कुछ मानदंड पूरा हो जाते हैं तो मुझे ग्राफिकल नियंत्रण मीटर के स्क्रीनशॉट भेजने में सक्षम होना चाहिए .. – user441660

+0

स्नैपशॉट लेने के लिए कई ऑब्जेक्ट्स के लिए इन नियंत्रणों को दिखाया जा सकता है एक अच्छा विचार .. यह अच्छा होगा अगर मैं उन्हें उपयोगकर्ता-नियंत्रण पर रख सकूं, पृष्ठभूमि में इसका स्नैपशॉट लें और इसे एक छवि के रूप में भेजें .. – user441660

उत्तर

11

हां। यह संभव है।

मैंने इसे करने के लिए एक नमूना कार्यक्रम चाबुक किया। मेरे नामकरण सम्मेलनों और कोड संगठन को क्षमा करें, यह बहुत जल्दी से चाबुक हो गया था। आप अपनी जरूरतों को बेहतर ढंग से फिट करने के लिए इसे संशोधित कर सकते हैं, लेकिन यह मूल बातें दिखाता है।

  • Button1: डिफ़ॉल्ट सेटिंग्स के साथ बटन

    मैं तीन नियंत्रण के साथ एक ही रूप है।

  • Button2: दृश्यमान संपत्ति गलत पर सेट और पाठ सेट के साथ बटन के लिए "Button2 - दिखाई नहीं"
  • webBrowser1: दृश्यता गलत पर सेट के साथ WebBrowser नियंत्रण, 250, 101 (सिर्फ इसलिए यह फिट बैठता है का आकार सेट । मेरी फार्म पर आकार प्रासंगिक है जब आप मेरा उत्तर के तल पर कब्जा को देखो है आप उसके अनुसार यह आकार की आवश्यकता होगी)

यहाँ 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"); 
     } 

    } 
} 

इसके परिणामस्वरूप निम्नलिखित कैप्चर:

यह एक दिलचस्प सवाल है, लेकिन में क्यों आपको कभी ऐसा करने की आवश्यकता होगी -

alt text

alt text

+4

मुझे कुछ स्पष्ट नहीं है। 'ग्राफिक्स जी = myControl.CreateGraphics();' कैसे उपयोग किया जाता है? – beppe9000