मुझे यह दिखाने की ज़रूरत है कि विंडोज़ फॉर्म के पीछे क्या है। मैं स्टार्टअप पर फॉर्म को छोटा करना चाहता हूं, फॉर्म के पीछे की चीजों का स्क्रीनशॉट लेना चाहता हूं, और स्क्रीन शॉट को बैकग्राउंड इमेज के रूप में सेट करना चाहता हूं।

मैंने पहले ही कोड का पालन करने की कोशिश की है:

this.WindowState = FormWindowState.Minimized;
var X1 = this.PointToScreen(panel1.Location).X;
var Y1 = this.PointToScreen(panel1.Location).X;

var X2 = this.PointToScreen(panel2.Location).X;
var Y2 = this.PointToScreen(panel2.Location).X;

Bitmap bitmap = new Bitmap(this.Width, this.Height);
Graphics g = Graphics.FromImage(bitmap);
g.CopyFromScreen(X1, Y1, X2, Y2, bitmap.Size);
this.BackgroundImage = bitmap;

this.WindowState = FormWindowState.Normal;

पैनल 1 प्रपत्र के ऊपरी बाएँ कोने पर स्थित है और पैनल 2 प्रपत्र के निचले बाएँ कोने पर स्थित है

जब मैं इस कोड को चलाता हूं, तो पृष्ठभूमि छवि प्रदर्शित नहीं होती है।

मैं सी # में विंडोज़ फॉर्म का उपयोग कर रहा हूँ

0
Apollo199999999 1 सितंबर 2019, 13:09

1 उत्तर

सबसे बढ़िया उत्तर

यदि आपको वास्तव में अपने फ़ॉर्म की पृष्ठभूमि छवि सेट करने की आवश्यकता है, तो आप अपने फ़ॉर्म के Load ईवेंट हैंडलर में निम्न कोड जोड़ सकते हैं:

var rect = this.RectangleToScreen(this.ClientRectangle);
Bitmap bitmap = new Bitmap(rect.Width, rect.Height);

//this.WindowState = FormWindowState.Minimized;    // If you use the Load event,
                                                   // you don't really need this line.
using (Graphics g = Graphics.FromImage(bitmap))
{
    g.CopyFromScreen(rect.Location, Point.Empty, bitmap.Size);
}
this.BackgroundImage = bitmap;
//this.WindowState = FormWindowState.Normal;       // Same here.

हालांकि, जैसा कि टिप्पणियों में बताया गया है, अगर आप अपने फॉर्म के पीछे जो कुछ भी दिखाना चाहते हैं, Form.Opacity प्रॉपर्टी उपयोगी हो सकती है। यह फ़ॉर्म को अर्ध-पारदर्शी बनाने में आपकी मदद कर सकता है:

this.Opacity = 0.5;

और आप फ़ॉर्म को इसके नियंत्रणों को छोड़कर अर्ध-पारदर्शी (या पूरी तरह से पारदर्शी) भी बना सकते हैं, जैसा कि इस उत्तर में दिखाया गया है।

0
41686d6564 1 सितंबर 2019, 10:55