दिलचस्प पोस्ट
मैं कैसे जांचूं अगर एक जावास्क्रिप्ट एआरएआर मान खाली या शून्य है? कैसे printf uint64_t? इसके साथ विफल रहता है: "नकली अनुगामी '% प्रारूप में" स्थानीय होस्ट पर एक वेब सेवा के लिए एक Android डिवाइस से कनेक्ट करें मैं जावा अंतरफलक में एक स्थिर विधि को परिभाषित क्यों नहीं कर सकता? CSS3 रूपांतरण स्केव स्टोरीबोर्ड के बिना एक्सकोड 6 में रिक्त एप्लिकेशन कैसे बनाएं अनिश्चित संपत्ति डेटा-वैल-आवश्यक विशेषता प्राप्त करती रहती है सी # में "variable! = Null" के बजाय एक बार "नल! = चर" क्यों दिखता है? क्या मैं अपने आवेदन में 'होम' बटन को ओवरराइड कर सकता हूं? जावास्क्रिप्ट में किसी अन्य समयक्षेत्र में तिथि कन्वर्ट सहकारिता में सी # यह निर्धारित करने का सबसे तेज़ तरीका है कि एक पूर्णांक मान के ज्ञात सेटों के साथ दो पूर्णांक (समस्त) के बीच है पूरी तरह से और वर्बोज जी ++ चेतावनियां सक्षम करने के लिए झंडे ईएस 5 में ऑब्जेक्ट। डेफ़िनप्रॉपर्टी रेलवे -4, एक्ज़ीजेएस :: प्रोग्रामस पेज्स में त्रुटि # स्वागत

सी # WinForms के साथ पारदर्शी छवि

मैं वीएस 2008 में एक विंडोज़ प्रपत्र एप्लीकेशन पर काम कर रहा हूं, और मैं एक छवि को दूसरे के शीर्ष पर प्रदर्शित करना चाहता हूं, जिसमें शीर्ष छवि जीआईएफ या पारदर्शी हिस्से के साथ कुछ है।

असल में मेरी एक बड़ी छवि है और अगर मैं शीर्ष पर एक छोटी सी छवि डालूं, तो वह थोड़े उपयोगकर्ता के लिए एक छवि के रूप में दिखाई दे।

मैं एक पिक्चरबॉक्से का उपयोग करने की कोशिश कर रहा हूं, लेकिन क्या यह कोई काम नहीं करता है, कोई सुझाव?

वेब के समाधान से एकत्रित समाधान "सी # WinForms के साथ पारदर्शी छवि"

मैं कुछ दिनों पहले इसी तरह की स्थिति में था। आप अपनी छवि को होस्ट करने के लिए एक पारदर्शी नियंत्रण बना सकते हैं

using System; using System.Windows.Forms; using System.Drawing; public class TransparentControl : Control { private readonly Timer refresher; private Image _image; public TransparentControl() { SetStyle(ControlStyles.SupportsTransparentBackColor, true); BackColor = Color.Transparent; refresher = new Timer(); refresher.Tick += TimerOnTick; refresher.Interval = 50; refresher.Enabled = true; refresher.Start(); } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x20; return cp; } } protected override void OnMove(EventArgs e) { RecreateHandle(); } protected override void OnPaint(PaintEventArgs e) { if (_image != null) { e.Graphics.DrawImage(_image, (Width / 2) - (_image.Width / 2), (Height / 2) - (_image.Height / 2)); } } protected override void OnPaintBackground(PaintEventArgs e) { //Do not paint background } //Hack public void Redraw() { RecreateHandle(); } private void TimerOnTick(object source, EventArgs e) { RecreateHandle(); refresher.Stop(); } public Image Image { get { return _image; } set { _image = value; RecreateHandle(); } } } 

पिक्चरबॉक्स में छवियों की दो परतें हैं: पृष्ठभूमि छवि और छवि, कि आप ड्राइंग और समाशोधन सहित एक दूसरे से स्वतंत्र रूप से उपयोग कर सकते हैं।

एक PictureBox पर बड़ी / नीचे की छवि रखो, फिर OnPaint ईवेंट में एक हैंडलर जोड़ें और e.Graphics.DrawImage() ओवरलोड में से किसी एक का उपयोग करें। आप छवि का उपयोग कर छवि को लोड कर सकते हैं। Image.FromFile()

छोटे / ऊपर की छवि के लिए ओवरले के लिए पृष्ठभूमि में एक अल्फा चैनल होना चाहिए और पारदर्शी होना होगा। आप यह सुनिश्चित करने में सक्षम होना चाहिए Photoshop या कुछ इसी तरह से बहुत आसानी से। सुनिश्चित करें कि आप एक प्रारूप में सहेजते हैं जो अल्फा चैनल का समर्थन करता है, जैसे पीएनजी।

Vb.net कोड (लियॉन टेयसन के लिए सभी क्रेडिट):

 Imports System Imports System.Windows.Forms Imports System.Drawing Public Class TransparentControl Inherits Control Private ReadOnly Local_Timer As Timer Private Local_Image As Image Public Sub New() SetStyle(ControlStyles.SupportsTransparentBackColor, True) BackColor = Color.Transparent Local_Timer = New Timer With Local_Timer .Interval = 50 .Enabled = True .Start() End With AddHandler Local_Timer.Tick, AddressOf TimerOnClick End Sub Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams Get Dim cp As CreateParams cp = MyBase.CreateParams cp.ExStyle = &H20 Return cp End Get End Property Protected Overrides Sub OnMove(ByVal e As System.EventArgs) MyBase.OnMove(e) RecreateHandle() End Sub Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(e) If Local_Image IsNot Nothing Then _ e.Graphics.DrawImage(Local_Image, New Rectangle(0, 0, (Width / 2) - (Local_Image.Width / 2), (Height / 2) - (Local_Image.Height / 2))) End Sub Protected Overrides Sub OnPaintBackground(ByVal pevent As System.Windows.Forms.PaintEventArgs) ' DO NOT PAINT BACKGROUND End Sub ''' <summary> ''' Hack ''' </summary> ''' <remarks></remarks> Public Sub ReDraw() RecreateHandle() End Sub Private Sub TimerOnClick(ByVal sender As Object, ByVal e As System.EventArgs) RecreateHandle() Local_Timer.Stop() End Sub Public Property Image As Image Get Return Local_Image End Get Set(ByVal value As Image) Local_Image = value RecreateHandle() End Set End Property End Class 

इस उत्तर के नीचे समान पदों की सूची का संदर्भ दिया गया है।

यह उत्तर पिक्चरबॉक्स और विनफॉर्म्स को प्रस्तुत करता है (नीचे दिए गए अन्य पदों में, कई लोग दोहराते हैं कि WPF पहले से ही यह अच्छी तरह से हल करता है)

  1. Winform बनाएँ
  2. एक्स 2 चित्रबॉक्स बनाएं
    • 'पृष्ठभूमि' के सामने 'अग्रभूमि_पिक्चर बॉक्स // चित्र बॉक्स'
    • पृष्ठभूमि_पिक्चरबॉक्स // तस्वीर बॉक्स 'पीछे' the 'अग्रभूमि'
  3. प्रत्येक चित्र बॉक्स के लिए 'पेंट' ईवेंट जोड़ें
    • 'डिज़ाइनर' में ऑब्जेक्ट का चयन करें
    • 'गुण' टैब चुनें (या दाएं क्लिक करें और पॉपअप मेनू से चुनें)
    • ईवेंट बटन का चयन करें (छोटे बिजली बोल्ट)
    • 'पेंट' के दाएं हिस्से के खाली फ़ील्ड में डबल क्लिक करें
  4. निम्न कोड को मुख्य प्रपत्र के 'लोड' फ़ंक्शन में जोड़ें (यदि पहले से नहीं जोड़ा गया है, तो चरण 3 में दृष्टिकोण का उपयोग करें और 'रंग' के बजाय 'लोड' का चयन करें)

=

 private void cFeedback_Form_Load(object sender, EventArgs e) { ... // Ensure that it is setup with transparent background foreground_pictureBox.BackColor = Color.Transparent; // Assign it's 'background' foreground_pictureBox.Parent = background_pictureBox; ... } 

5 'Background_pictureBox' के लिए 'पेंट' कॉल में:

=

 private void background_pictureBox_Paint(object sender, PaintEventArgs e) { ...foreground_pictureBox_Paint(sender, e); } 

6 'अग्रभूमि_पिक्चरबॉक्स' कॉल के भीतर, जो भी ग्राफिक्स कॉल आप अग्रभूमि में प्रदर्शित करना चाहते हैं उसे जोड़ें।

यह विषय स्वयं को कई पदों में पुनरावृत करता है:

कैसे करने के लिए मेकअप picturebox पारदर्शी

सी तेज picturebox पारदर्शी-पृष्ठभूमि नहीं करता है-लग रहे करने के लिए काम

बनाने को लेकर टकराव पैदा-picturebox पारदर्शी-इन-सी नेट

एक-picturebox-समस्या

मैंने हमेशा पाया है कि मुझे एकल चित्र बॉक्स या नियंत्रण का उपयोग करते हुए, खुद को छवियों को मिला दिया गया है। पारदर्शी हिस्से के साथ दो पिक्चरबॉक्सेस होने पर मैंने कभी भी मेरे लिए काम नहीं किया है