2009-12-02 20 views
5

मैं यह पेंट एप्लिकेशन कर रहा हूं। यह बहुत आसान है। इसमें एक पैनल शामिल है जहां मैं आकर्षित करूंगा और अंततः मैं जेपीजी या बीएमपी या पीएनजी फ़ाइल के रूप में सहेजूंगा।एक छवि के रूप में सहेजने वाला पैनल

मेरा आवेदन पूरी तरह से काम करता है लेकिन मुझे जिस समस्या का सामना करना पड़ रहा है वह यह है कि जब मैं आउटपुट को सहेज रहा हूं तो पैनल पर जो कुछ भी खींचा गया है वह काला नहीं है।

सब मेरे काम के रूप में

Thepic = new Bitmap(panel1.ClientRectangle.Width, this.ClientRectangle.Height); 

और माउस पर सहेजा गया है किया गया (नीचे, बात तक) मैं

snapshot = (Bitmap)tempDraw.Clone(); 

है और यह सामान्य रूप से कार्य को सहेज लेकिन फिर rsult काला छवि है पैनल में क्या नहीं है।

+0

आपके फ़िल्टर में "png" के बजाय आपके पास "pgn" है। –

+0

... मैं खुद को पोस्ट सही कर दूंगा, लेकिन अगर यह आपके असली स्रोत से चिपकाया गया है तो आप इसके बारे में जानना चाहेंगे ... –

+0

यह ठीक है लेकिन फिर भी मैं इतनी उलझन में हूं कि क्यों बाहर रखा गया है काला छवि – Tony

उत्तर

9

मुझे लगता है कि समस्या यह हो सकती है कि आप "क्लोन" विधि का उपयोग कर रहे हैं।

"DrawToBitmap" - यह अतीत में मेरे लिए काम करता है।

यहां एक नमूना है कि एक नियंत्रण "plotPrinter" कहा जाता है से एक बिटमैप बचाता है:

 int width = plotPrinter.Size.Width; 
     int height = plotPrinter.Size.Height; 

     Bitmap bm = new Bitmap(width, height); 
     plotPrinter.DrawToBitmap(bm, new Rectangle(0, 0, width, height)); 

     bm.Save(@"D:\TestDrawToBitmap.bmp", ImageFormat.Bmp); 
 Be aware of saving directly to the C directly as this is not 
     permitted with newer versions of window, try using SaveFileDialog. 
SaveFileDialog sf = new SaveFileDialog(); 
    sf.Filter = "Bitmap Image (.bmp)|*.bmp|Gif Image (.gif)|*.gif|JPEG Image (.jpeg)|*.jpeg|Png Image (.png)|*.png|Tiff Image (.tiff)|*.tiff|Wmf Image (.wmf)|*.wmf"; 
    sf.ShowDialog(); 
    var path = sf.FileName; 
+4

यह बहुत अच्छा काम करता है किसी भी बच्चे के नियंत्रण के नियंत्रण के लिए, लेकिन जब नियंत्रण में बाल नियंत्रण होते हैं, तो 'DrawToBitmap' बच्चों को' z 'ऑर्डर को उलट देता है (जिसका मतलब नियंत्रण के पीछे वास्तविक मोर्चे के सामने खींचा जाता है)। –

+0

Thanx आपके समाधान का बहुत कुछ काम करता है .... – Tony

+0

drawtobitmap विधि नहीं ढूंढ सकता –

0

आप इस की कोशिश कर सकते हैं, यह मेरे लिए काम, बजाय मैं MemoryStream sed ।

MemoryStream ms = new MemoryStream(); 
Bitmap bmp = new Bitmap(panel1.Width, panel1.Height); 
panel1.DrawToBitmap(bmp, new System.Drawing.Rectangle(0, 0, panel1.Width, panel1.Height)); 
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); //you could ave in BPM, PNG etc format. 
byte[] Pic_arr = new byte[ms.Length]; 
ms.Position = 0; 
ms.Read(Pic_arr, 0, Pic_arr.Length); 
ms.Close(); 
संबंधित मुद्दे