2010-11-17 17 views
12

मेरे पास निम्न कोड है। क्या मैं जिस पाठ को लिख रहा हूं उस पर एक रूपरेखा डालने का कोई आसान तरीका है?सिस्टम के साथ रूपरेखा पाठ। ड्रॉइंग?

var imageEncoder = Encoder.Quality; 
var imageEncoderParameters = new EncoderParameters(1); 
imageEncoderParameters.Param[0] = new EncoderParameter(imageEncoder, 100L); 

var productImage = GetImageFromByteArray(myViewModel.ProductImage.DatabaseFile.FileContents); 
var graphics = Graphics.FromImage(productImage); 

var font = new Font("Segoe Script", 24); 
var brush = Brushes.Orange; 

var container = new Rectangle(myViewModel.ContainerX, myViewModel.ContainerY,          myViewModel.ContainerWidth,            myViewModel.ContainerHeight); 

var stringFormat = new StringFormat {Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center}; 

graphics.DrawString(customizationText, font, brush, container, stringFormat); 

उत्तर

23

हां। DrawString के बजाय, कॉल की निम्न क्रम का उपयोग करें:

  • new GraphicsPath (बनाता है एक खाली GraphicsPath)
  • GraphicsPath.AddString
  • Graphics.DrawPath (किसी में रूपरेखा ड्रॉ (GraphicsPath वस्तु अब पाठ की रूपरेखा का प्रतिनिधित्व करता है) Pen आप चाहते हैं)

आप Graphics.DrawString साथ GraphicsPath.AddString उपयोग करने की आवश्यकता है, तो आप, फ़ॉन्ट आकार बदलने की आवश्यकता becau से Graphics.DrawString "बिंदु आकार" की अपेक्षा करता है जबकि GraphicsPath.AddString "em आकार" की अपेक्षा करता है। रूपांतरण सूत्र बस emSize = g.DpiY * pointSize/72 है।

यहाँ एक कोड उदाहरण है: प्रतिक्रिया के लिए बहुत बहुत

// assuming g is the Graphics object on which you want to draw the text 
GraphicsPath p = new GraphicsPath(); 
p.AddString(
    "My Text String",    // text to draw 
    FontFamily.GenericSansSerif, // or any other font family 
    (int) FontStyle.Regular,  // font style (bold, italic, etc.) 
    g.DpiY * fontSize/72,  // em size 
    new Point(0, 0),    // location where to draw text 
    new StringFormat());   // set options here (e.g. center alignment) 
g.DrawPath(Pens.Black, p); 
// + g.FillPath if you want it filled as well 
+0

धन्यवाद, लेकिन मैं यह काम करने के लिए नहीं कर पा रहे। मुझे यकीन नहीं है कि इन तरीकों के लिए किस अधिभार का उपयोग करना है। क्या मैं अपने वर्तमान कार्यक्रम से बाहर निकलने वाली एकमात्र रेखा ग्राफिक्स हो सकता हूं। ड्रॉस्ट्रिंग() लाइन? –

+0

[हां।] (Http://meta.stackexchange.com/questions/700/) – Timwi

+0

इस जानकारी के लिए धन्यवाद, मैंने जो कुछ कहा वह मैंने किया ... लेकिन निश्चित रूप से मुझे एहसास हुआ कि कोई एंटी-एलियासिंग नहीं है पाठ बहुत भयानक लग रहा है। :(सुनिश्चित नहीं है कि अभी तक इसके बारे में क्या करना है। –

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