C# Drawing 文字位置写入 StringFormat 使用记录

参考地址 https://www.cnblogs.com/lesliexin/p/12879270.html

https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.stringformat.alignment?view=netframework-4.8

https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.stringformatflags?view=netframework-4.7.2

水平属性 

StringFormat.Alignment  

Center  中间
Far = 右边
Near = 左边

StringFormat.LineAlignment

Center  中间
Far =下边
Near =上边

定义写入文字的矩形大小区域

  Rectangle rectangle = new Rectangle();
                        rectangle.X = item.Xpoint.Value;
                        rectangle.Y = item.Ypoint.Value;
                        rectangle.Width = item.Width.Value;
                        rectangle.Height = item.Height.Value;
                        StringFormat stringFormat = new StringFormat();

 定义 文字位置区域

switch (item.Align)
                        {
                            case 0:
                                {
                                    stringFormat.Alignment = StringAlignment.Near;
                                    stringFormat.LineAlignment = StringAlignment.Center;
                                }; break;
                            case 1:
                                {
                                    stringFormat.Alignment = StringAlignment.Far;
                                    stringFormat.LineAlignment = StringAlignment.Center;
                                }
                                break;
                            case 2:
                                {
                                    stringFormat.Alignment = StringAlignment.Center;
                                    stringFormat.LineAlignment = StringAlignment.Center;
                                }
                                break;
                            case 3: {
                                    stringFormat.Alignment = StringAlignment.Center;
                                    stringFormat.LineAlignment = StringAlignment.Near;
                                };break;
                            case 4: {
                                    stringFormat.Alignment = StringAlignment.Center;
                                    stringFormat.LineAlignment = StringAlignment.Far;
                                };break;
                        }

将文字绘制到图片上

using Bitmap bmp = new Bitmap(originalImage);
            using Graphics g = Graphics.FromImage(bmp);

            foreach (var item in drawStrsList)
            {
                if (item.StringFormat != null && item.Rectangle.Width>0 && item.Rectangle.Height>0)
                {
                    g.DrawString(item.Str, item.Font, item.Sbrush, item.Rectangle, item.StringFormat);
                    //g.DrawRectangle(new Pen(Color.Black, 1F), item.Rectangle);
                }
                else
                {
                    g.DrawString(item.Str, item.Font, item.Sbrush, item.PointF);
                }

            }
            
            MemoryStream ms = new MemoryStream();
            bmp.Save(ms, ImageFormat.Png);
            return ms;
原文地址:https://www.cnblogs.com/litianfeng-net/p/13985445.html