2015-12-17 10 views
6

enter image description here विजुअल बेसिक 2010 में लिखा गया यह टूल छवियों को एक लेखक टेक्स्ट जोड़ना चाहिए। उपयोगकर्ता फ़ॉन्ट अस्पष्टता और स्थिति सेट करने में सक्षम है। चीजों को आसान बनाने के लिए मैं कुछ स्थिति प्रीसेट चाहता था क्योंकि कोई नीचे दाएं कोने में देख सकता है। गणना मैं उपयोग कर रहा हूँ (इस मामले में निचली दाईं ओर है:।।किनारों पर छवि में टेक्स्ट टेक्स्ट

Dim textSize As Size = TextRenderer.MeasureText(tagString + curText, curFont) 
tmpPos = New Point(srcImg.Width - textSize.Width - 10, srcImg.Height - textSize.Height - 10) 

आप इस इस उदाहरण चित्र कुछ पाठ सिर्फ बाहर क्लिप पर के रूप में कहाँ enter image description here

पहले एक के लिए पूरी तरह से काम करता है देख सकते हैं : 1024x768 | का पता लगाया गया फ़ॉन्ट का आकार: 680x72

दूसरा एक: 1688x1125 | का पता लगाया गया फ़ॉन्ट का आकार: 680x72

मुझे लगता है यह छवियों के पहलू अनुपात के साथ कुछ करने के लिए है, लेकिन मैं कैसे करने के लिए पता नहीं है इसे ठीक करो।

पाठ इस तरह तैयार की है:

brush = New SolidBrush(color.FromArgb(alpha, color)) 
     gr = Graphics.FromImage(editImg) 
     gr.DrawString(tagString + text, font, brush, pos) 
     HauptBild.Image = editImg 

मैं इस http://www.codeproject.com/Articles/20923/Mouse-Position-over-Image-in-a-PictureBox मिल गया है और यह मेरे सवालों का जवाब दे दिया।

+0

क्या आप टेक्स्ट को रखने वाले कोड को शामिल कर सकते हैं? –

+0

कृपया कुछ कोड जोड़ें, क्या आप सिर्फ उस कोड को डाल सकते हैं जो छवि को संशोधित करता है? –

+0

कुछ कोड वास्तव में उपयोगी होंगे – Ian

उत्तर

1

क्या यह समस्या केवल आपके पूर्वावलोकन में या परिवर्तित फ़ाइल में होती है? कोड को पोस्ट करें कि आप नई छवि को कैसे सहेजते हैं। मुझे लगता है कि आपने अपने पिक्चरबॉक्स में एक सिज़ेमोड सेट किया है जो समस्या है। Sizemode के बिना इसे आज़माएं।

0

आपके कोड को और बेहतर देखना बेहतर होगा, लेकिन जैसा कि मैं TextRenderer क्लास द्वारा समझता हूं यह System.Windows.Forms है। बस नियंत्रण से बनाए गए ग्राफिक्स का उपयोग न करें (मुझे लगता है कि यह तस्वीर है सिज़ेमोड के साथ बॉक्स: ज़ूम), ग्राफिक्स का उपयोग करें, इसके बजाय आपकी छवि से बनाया गया है।

यहां कोड (क्षमा करें, सी #) है, जो फ़ाइल से छवि लोड करता है, उसी समन्वय से शुरू होने वाले पाठ को खींचता है और पॉक्चरबॉक्स 1 पर स्थान बनाता है। पाठ हमेशा प्वाइंट (100,100) से शुरू होता है।

OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

    openFileDialog1.Filter = "Image files|*.jpeg;*.png;*.jpg;*.gif;*.bmp"; 
    if(openFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     try 
     { 
      Bitmap orig=(Bitmap)Bitmap.FromFile(openFileDialog1.FileName); 
      //workaround for images with color table, see remarks here https://msdn.microsoft.com/en-us/library/system.drawing.graphics.fromimage(v=vs.110).aspx 
      Bitmap bmp=orig.Clone(new Rectangle(0, 0, orig.Width, orig.Height), System.Drawing.Imaging.PixelFormat.Format32bppPArgb); 
      Graphics g = Graphics.FromImage(bmp); 
      g.DrawString("hello", new Font(this.Font.FontFamily,30,FontStyle.Bold) , new System.Drawing.SolidBrush(System.Drawing.Color.Yellow), new Point(100, 100)); 
      this.pictureBox1.Image = bmp; 
      orig.Dispose(); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Something goes wrong: " + ex.Message+ "\\n"+ ex.StackTrace); 
     } 
    } 
संबंधित मुद्दे