2011-05-25 12 views
12

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

private void button1_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog dlg = new OpenFileDialog(); 

      dlg.Title = "Open Image"; 
      dlg.Filter = "bmp files (*.bmp)|*.bmp"; 

      if (dlg.ShowDialog() == DialogResult.OK) 
      {      
      PictureBox PictureBox1 = new PictureBox();      
       PictureBox1.Image(dlg.FileName); 
      } 

      dlg.Dispose(); 
     } 
+1

आपको कौन सी त्रुटि मिली? – hemp

+3

आपको क्या त्रुटि मिली? –

+0

आपको इसका निपटान करने के लिए एक उपयोग कथन में अपना OpenFileDialog भी लपेटना चाहिए। यह गारंटी देता है कि यदि आप इसके निष्पादन के दौरान त्रुटि में भाग लेते हैं तो संवाद ठीक से निपटान किया जाता है, जहां आपका मैन्युअल निपटान निष्पादित नहीं होगा। –

उत्तर

26

आप Bitmap class का एक उदाहरण बनाने के लिए, constructor overload कि डिस्क पर एक फ़ाइल से एक छवि को लोड करता है का उपयोग कर सकते है। चूंकि आपका कोड अब लिखा गया है, आप PictureBox.Imageसंपत्ति का उपयोग करने की कोशिश कर रहे हैं जैसे कि यह विधि था।

(स्वयं Dispose विधि बुला से, using statement का लाभ भी ले रही है उचित निपटान सुनिश्चित करने के लिए नहीं बल्कि) इस तरह देखने के लिए अपने कोड में परिवर्तित करें:

private void button1_Click(object sender, EventArgs e) 
{ 
    // Wrap the creation of the OpenFileDialog instance in a using statement, 
    // rather than manually calling the Dispose method to ensure proper disposal 
    using (OpenFileDialog dlg = new OpenFileDialog()) 
    { 
     dlg.Title = "Open Image"; 
     dlg.Filter = "bmp files (*.bmp)|*.bmp"; 

     if (dlg.ShowDialog() == DialogResult.OK) 
     { 
      PictureBox PictureBox1 = new PictureBox(); 

      // Create a new Bitmap object from the picture file on disk, 
      // and assign that to the PictureBox.Image property 
      PictureBox1.Image = new Bitmap(dlg.FileName); 
     } 
    } 
} 
बेशक

, कि प्रदर्शन के लिए नहीं जा रहा है छवि को अपने फॉर्म पर कहीं भी क्योंकि आपके द्वारा बनाए गए चित्र बॉक्स नियंत्रण को फ़ॉर्म में जोड़ा नहीं गया है। आपको Add method का उपयोग करके फ़ॉर्म के Controls collection पर अभी बनाया गया नया चित्र बॉक्स नियंत्रण जोड़ने की आवश्यकता है। रेखा से ऊपर कोड यहाँ करने के लिए जोड़ा नोट:

private void button1_Click(object sender, EventArgs e) 
{ 
    using (OpenFileDialog dlg = new OpenFileDialog()) 
    { 
     dlg.Title = "Open Image"; 
     dlg.Filter = "bmp files (*.bmp)|*.bmp"; 

     if (dlg.ShowDialog() == DialogResult.OK) 
     { 
      PictureBox PictureBox1 = new PictureBox(); 
      PictureBox1.Image = new Bitmap(dlg.FileName); 

      // Add the new control to its parent's controls collection 
      this.Controls.Add(PictureBox1); 
     } 
    } 
} 
+0

ग्रे ... सब कुछ ठीक हो गया, खिड़की खुल गई लेकिन छवि को खोल नहीं सका !! मैं जिस बीएमपी छवि को लोड करता हूं वह 49.6 एमबी आकार के साथ कोई समस्या है! डिजाइनर विंडो में मैंने बस एक बटन (छवि लोड करने के लिए) और चित्र बॉक्स नियंत्रण डाला है। – raghu

1
आप

, यह भी इस तरह की कोशिश कर सकते हैं, PictureBox1.Image = Image.FromFile("<your ImagePath>" or <Dialog box result>);

1

PictureBox.Image एक संपत्ति, नहीं एक विधि है। आप इसे इस तरह सेट कर सकते हैं:

PictureBox1.Image = System.Drawing.Image.FromFile(dlg.FileName); 
5

आप की कोशिश करनी चाहिए करने के लिए:

  • नेत्रहीन picturebox बनाएं रूप में (यह आसान है)
  • Fill को picturebox की Dock प्रॉपर्टी सेट (यदि आप छवि चाहते हैं फार्म भरने के लिए)
  • StretchImage
को picturebox की SizeMode सेट अंत में

:

private void button1_Click(object sender, EventArgs e) 
{ 
    OpenFileDialog dlg = new OpenFileDialog(); 
    dlg.Title = "Open Image"; 
    dlg.Filter = "bmp files (*.bmp)|*.bmp"; 
    if (dlg.ShowDialog() == DialogResult.OK) 
    {      
     PictureBox1.Image = Image.FromFile(dlg.Filename); 
    } 
    dlg.Dispose(); 
} 
+0

@marco ..: सबकुछ ठीक हो गया, खिड़की खुल गई लेकिन छवि को खोल नहीं सका !! बीएमपी छवि जो मैंने लोड की है, 49.6 एमबी आकार के साथ कोई समस्या है! डिजाइनर विंडो में मैंने बस एक बटन (छवि लोड करने के लिए) रखा है और चित्र बॉक्स नियंत्रण। – raghu

+0

@raghu: आपको कौन सी त्रुटि मिलती है? – Marco

1

आप निम्न की कोशिश कर सकते हैं:

private void button1_Click(object sender, EventArgs e) 
    { 
     OpenFileDialog fDialog = new OpenFileDialog(); 
     fDialog.Title = "Select file to be upload"; 
     fDialog.Filter = "All Files|*.*"; 
     // fDialog.Filter = "PDF Files|*.pdf"; 
     if (fDialog.ShowDialog() == DialogResult.OK) 
     { 
      textBox1.Text = fDialog.FileName.ToString(); 
     } 
    } 
0

यह आसान है। बस जोड़ें:

PictureBox1.BackgroundImageLayout = ImageLayout.Zoom; 
2
private void button1_Click(object sender, EventArgs e) 
{ 
    OpenFileDialog open = new OpenFileDialog(); 
    if (open.ShowDialog() == DialogResult.OK) 
     pictureBox1.Image = Bitmap.FromFile(open.FileName); 
} 
5

वर्क्स ठीक। इसे आजमाएं,

private void addImageButton_Click(object sender, EventArgs e) 
{ 
    OpenFileDialog of = new OpenFileDialog(); 
    //For any other formats 
    of.Filter = "Image Files (*.bmp;*.jpg;*.jpeg,*.png)|*.BMP;*.JPG;*.JPEG;*.PNG"; 
    if (of.ShowDialog() == DialogResult.OK) 
    { 
     pictureBox1.ImageLocation = of.FileName; 

    } 
} 
संबंधित मुद्दे