C# Graphics绘图 picBox

需求:

  1             Bitmap bm = new Bitmap(picboxPreview.Width, picboxPreview.Height);
  2             using (Graphics g = Graphics.FromImage(bm))
  3             {
  4                 //绘制外面的矩形边框
  5                 Pen pen = new Pen(Color.Black, 2.0f);
  6                 g.DrawRectangle(pen, new Rectangle(new Point(0, 0), picboxPreview.Size));
  7                 //绘制左边的位图
  8                 if (cbxPhoto.CheckedStatus && picboxPhoto.Image != null)
  9                 {
 10                     g.DrawImage(picboxPhoto.Image, new Rectangle(new Point(5, 5), new Size(picboxPreview.Height - 5, picboxPreview.Height - 10)));
 11                 }
 12                 //绘制右边的位图
 13                 if (cbxLogo.CheckedStatus && picboxLogo.Image != null)
 14                 {
 15                     g.DrawImage(picboxLogo.Image, new Rectangle(new Point(picboxPreview.Width - (picboxPreview.Height - 5) - 5, 5), new Size(picboxPreview.Height - 5, picboxPreview.Height - 10)));
 16                 }
 17                 //绘制Name、Designation、Department、Institution/Company
 18                 StringFormat sf = new StringFormat();
 19                 sf.Alignment = StringAlignment.Center;
 20                 sf.LineAlignment = StringAlignment.Center;
 21                 Font fA = new Font("Arial", 15, FontStyle.Bold);
 22                 Font fB = new Font("Arial", 12, FontStyle.Regular);
 23                 //1.绘制4行 Name Designation Department Institution/Company
 24                 //2.绘制3行 Name Designation Department
 25                 //3.        Name Designation Institution/Company
 26                 //4         Name Department Institution/Company
 27                 //5         Designation Department Institution/Company
 28                 //6.绘制2行 Name Designation
 29                 //7         Name Department
 30                 //8         Name Institution/Company
 31                 //9         Designation Department
 32                 //10        Designation Institution/Company
 33                 //11        Department Institution/Company 
 34                 //12.绘制1行Name   
 35                 //13.       Designation   
 36                 //14.       Department  
 37                 //15.       Institution/Company
 38                 bool EnableName = cbxName.CheckedStatus && !string.IsNullOrEmpty(txtName.Text.Trim());
 39                 bool EnableDesignation = cbxDesignation.CheckedStatus && !string.IsNullOrEmpty(txtDesignation.Text.Trim());
 40                 bool EnableDepartment = cbxDepartment.CheckedStatus && !string.IsNullOrEmpty(txtDepartment.Text.Trim());
 41                 bool EnableInstitution = cbxInstitution.CheckedStatus && !string.IsNullOrEmpty(txtInstitution.Text.Trim());
 42                 //float drawX;
 43                 float drawY;
 44                 SizeF sizefName = g.MeasureString(txtName.Text.Trim(), new Font("Arial", 15, FontStyle.Bold));
 45                 SizeF sizefDesignation = g.MeasureString(txtDesignation.Text.Trim(), new Font("Arial", 12, FontStyle.Regular));
 46                 SizeF sizefDepartment = g.MeasureString(txtDepartment.Text.Trim(), new Font("Arial", 12, FontStyle.Regular));
 47                 SizeF sizefInstitution = g.MeasureString(txtInstitution.Text.Trim(), new Font("Arial", 12, FontStyle.Regular));
 48                 g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
 49                 bool EnableRows = EnableName && EnableDesignation && EnableDepartment && EnableInstitution;
 50                 if (EnableName && EnableDesignation && EnableDepartment && EnableInstitution)
 51                 {//1.绘制4行 Name Designation Department Institution/Company
 52                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2;
 53                     DrawStringOfName(g, sizefName, drawY);
 54 
 55                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2 + sizefName.Height;
 56                     DrawStringOfDesignation(g, sizefDesignation, drawY);
 57 
 58                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2 + sizefName.Height + sizefDesignation.Height;
 59                     DrawStringOfDepartment(g, sizefDepartment, drawY);
 60 
 61                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2 + sizefName.Height + sizefDesignation.Height + sizefDepartment.Height;
 62                     DrawStringOfInstitution(g, sizefInstitution, drawY);
 63                 }
 64                 else if (!EnableName && EnableDesignation && EnableDepartment && EnableInstitution)
 65                 {
 66                     drawY = (picboxPreview.Height - (sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2;
 67                     DrawStringOfDesignation(g, sizefDesignation, drawY);
 68 
 69                     drawY = (picboxPreview.Height - (sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2 + sizefDesignation.Height;
 70                     DrawStringOfDepartment(g, sizefDepartment, drawY);
 71 
 72                     drawY = (picboxPreview.Height - (sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2 + sizefDesignation.Height + sizefDepartment.Height;
 73                     DrawStringOfInstitution(g, sizefInstitution, drawY);
 74                 }
 75                 else if (EnableName && !EnableDesignation && EnableDepartment && EnableInstitution)
 76                 {
 77                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2;
 78                     DrawStringOfName(g, sizefName, drawY);
 79 
 80                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2 + sizefName.Height;
 81                     DrawStringOfDepartment(g, sizefDepartment, drawY);
 82 
 83                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2 + sizefName.Height + sizefDepartment.Height;
 84                     DrawStringOfInstitution(g, sizefInstitution, drawY);
 85                 }
 86                 else if (EnableName && EnableDesignation && !EnableDepartment && EnableInstitution)
 87                 {
 88                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefInstitution.Height)) / 2;
 89                     DrawStringOfName(g, sizefName, drawY);
 90 
 91                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefInstitution.Height)) / 2 + sizefName.Height;
 92                     DrawStringOfDesignation(g, sizefDesignation, drawY);
 93 
 94                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefInstitution.Height)) / 2 + sizefName.Height + sizefDesignation.Height;
 95                     DrawStringOfInstitution(g, sizefInstitution, drawY);
 96                 }
 97                 else if (EnableName && EnableDesignation && EnableDepartment && !EnableInstitution)
 98                 {
 99                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height)) / 2;
100                     DrawStringOfName(g, sizefName, drawY);
101 
102                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height)) / 2 + sizefName.Height;
103                     DrawStringOfDesignation(g, sizefDesignation, drawY);
104 
105                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height)) / 2 + sizefName.Height + sizefDesignation.Height;
106                     DrawStringOfDepartment(g, sizefDepartment, drawY);
107                 }
108                 else if (!EnableName && !EnableDesignation && EnableDepartment && EnableInstitution)
109                 {
110                     drawY = (picboxPreview.Height - (sizefDepartment.Height + sizefInstitution.Height)) / 2;
111                     DrawStringOfDepartment(g, sizefDepartment, drawY);
112 
113                     drawY = (picboxPreview.Height - (sizefDepartment.Height + sizefInstitution.Height)) / 2 + sizefDepartment.Height;
114                     DrawStringOfInstitution(g, sizefInstitution, drawY);
115                 }
116                 else if (!EnableName && EnableDesignation && !EnableDepartment && EnableInstitution)
117                 {
118                     drawY = (picboxPreview.Height - (sizefDesignation.Height + sizefInstitution.Height)) / 2;
119                     DrawStringOfDesignation(g, sizefDesignation, drawY);
120 
121                     drawY = (picboxPreview.Height - (sizefDesignation.Height + sizefInstitution.Height)) / 2 + sizefDesignation.Height;
122                     DrawStringOfInstitution(g, sizefInstitution, drawY);
123                 }
124                 else if (!EnableName && EnableDesignation && EnableDepartment && !EnableInstitution)
125                 {
126                     drawY = (picboxPreview.Height - (sizefDesignation.Height + sizefDepartment.Height)) / 2;
127                     DrawStringOfDesignation(g, sizefDesignation, drawY);
128 
129                     drawY = (picboxPreview.Height - (sizefDesignation.Height + sizefDepartment.Height)) / 2 + sizefDesignation.Height;
130                     DrawStringOfDepartment(g, sizefDepartment, drawY);
131                 }
132                 else if (EnableName && !EnableDesignation && !EnableDepartment && EnableInstitution)
133                 {
134                     drawY = (picboxPreview.Height - (sizefName.Height + sizefInstitution.Height)) / 2;
135                     DrawStringOfName(g, sizefName, drawY);
136 
137                     drawY = (picboxPreview.Height - (sizefName.Height + sizefInstitution.Height)) / 2 + sizefName.Height;
138                     DrawStringOfInstitution(g, sizefInstitution, drawY);
139                 }
140                 else if (EnableName && !EnableDesignation && EnableDepartment && !EnableInstitution)
141                 {
142                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDepartment.Height)) / 2;
143                     DrawStringOfName(g, sizefName, drawY);
144 
145                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDepartment.Height)) / 2 + sizefName.Height;
146                     DrawStringOfDepartment(g, sizefDepartment, drawY);
147                 }
148                 else if (EnableName && EnableDesignation && !EnableDepartment && !EnableInstitution)
149                 {
150                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height)) / 2;
151                     DrawStringOfName(g, sizefName, drawY);
152 
153                     drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height)) / 2 + sizefName.Height;
154                     DrawStringOfDesignation(g, sizefDesignation, drawY);
155                 }
156                 else if (!EnableName && !EnableDesignation && !EnableDepartment && EnableInstitution)
157                 {
158                     drawY = (picboxPreview.Height - sizefInstitution.Height) / 2;
159                     DrawStringOfInstitution(g, sizefInstitution, drawY);
160                 }
161                 else if (!EnableName && !EnableDesignation && EnableDepartment && !EnableInstitution)
162                 {
163                     drawY = (picboxPreview.Height - sizefDepartment.Height) / 2;
164                     DrawStringOfDepartment(g, sizefDepartment, drawY);
165                 }
166                 else if (!EnableName && EnableDesignation && !EnableDepartment && !EnableInstitution)
167                 {
168                     drawY = (picboxPreview.Height - sizefDesignation.Height) / 2;
169                     DrawStringOfDesignation(g, sizefDesignation, drawY);
170                 }
171                 else if (EnableName && !EnableDesignation && !EnableDepartment && !EnableInstitution)
172                 {
173                     drawY = (picboxPreview.Height - sizefName.Height) / 2;
174                     DrawStringOfName(g, sizefName, drawY);
175                 }
176             }
177             picboxPreview.SizeMode = PictureBoxSizeMode.Normal;
178             picboxPreview.Image = bm;    
 1         #region DrawString Name|Designation|Department|Institution
 2         private void DrawStringOfName(Graphics g, SizeF sizefName, float drawY)
 3         {
 4             string drawString = txtName.Text.Trim();
 5             Font drawFont = new Font("Arial", 15, FontStyle.Bold);
 6             Brush drawBrush = Brushes.Black;
 7             float drawX = (picboxPreview.Width - sizefName.Width) / 2;
 8             //drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2;
 9             g.DrawString(drawString, drawFont, drawBrush, drawX, drawY);
10         }
11         private void DrawStringOfDesignation(Graphics g, SizeF sizefDesignation, float drawY)
12         {
13             string drawString = txtDesignation.Text.Trim();
14             Font drawFont = new Font("Arial", 12, FontStyle.Regular);
15             Brush drawBrush = Brushes.Gray;
16             float drawX = (picboxPreview.Width - sizefDesignation.Width) / 2;
17             //drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2;
18             g.DrawString(drawString, drawFont, drawBrush, drawX, drawY);
19         }
20         private void DrawStringOfDepartment(Graphics g, SizeF sizefDepartment, float drawY)
21         {
22             string drawString = txtDepartment.Text.Trim();
23             Font drawFont = new Font("Arial", 12, FontStyle.Regular);
24             Brush drawBrush = Brushes.Gray;
25             float drawX = (picboxPreview.Width - sizefDepartment.Width) / 2;
26             //drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2;
27             g.DrawString(drawString, drawFont, drawBrush, drawX, drawY);
28         }
29         private void DrawStringOfInstitution(Graphics g, SizeF sizefInstitution, float drawY)
30         {
31             string drawString = txtInstitution.Text.Trim();
32             Font drawFont = new Font("Arial", 12, FontStyle.Regular);
33             Brush drawBrush = Brushes.Gray;
34             float drawX = (picboxPreview.Width - sizefInstitution.Width) / 2;
35             //drawY = (picboxPreview.Height - (sizefName.Height + sizefDesignation.Height + sizefDepartment.Height + sizefInstitution.Height)) / 2;
36             g.DrawString(drawString, drawFont, drawBrush, drawX, drawY);
37         }
38         #endregion

 结果:

原文地址:https://www.cnblogs.com/zhyue93/p/Graphics.html