2010-11-17 30 views
12

Tôi có mã sau đây. Có cách nào dễ dàng để đặt phác thảo trên văn bản tôi đang viết không?Văn bản phác thảo với System.Drawing?

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); 

Trả lời

23

Có. Thay vì Drawstring, sử dụng theo trình tự sau các cuộc gọi:

Nếu bạn cần sử dụng GraphicsPath.AddString cùng với Graphics.DrawString, bạn cần phải chuyển đổi kích thước phông chữ, becau se Graphics.DrawString mong đợi "kích thước điểm" trong khi GraphicsPath.AddString mong đợi "kích thước em". Công thức chuyển đổi chỉ đơn giản là emSize = g.DpiY * pointSize/72.

Dưới đây là một ví dụ mã:

// 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

Cảm ơn rất nhiều cho các phản ứng, nhưng tôi dường như không thể có được điều này để làm việc. Tôi không chắc chắn (các) tình trạng quá tải nào để sử dụng cho các phương pháp này. Liệu dòng duy nhất tôi lấy ra khỏi chương trình hiện tại của tôi là dòng đồ họa.DrawString()? –

+0

[Có.] (Http://meta.stackexchange.com/questions/700/) – Timwi

+0

Cảm ơn thông tin này, tôi đã làm đúng những gì bạn đã nói ... Nhưng tất nhiên tôi nhận ra rằng không có chống răng cưa văn bản trông khá khủng khiếp. :(Không chắc chắn phải làm gì về điều đó. –

Các vấn đề liên quan