赞
踩
为了在窗体正中输出文字,需要获得输出文字区域的宽和高,这使用MeasureString方法,方法返回值为Size类型;
然后计算输出的起点的x和y坐标,就可以输出了;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.Drawing.Drawing2D;
-
- namespace measure
- {
- public partial class Form1 : Form
- {
- private SizeF s1;
- private string str1 = "测试用的字符串";
- private SolidBrush brush1;
- private LinearGradientBrush brush2;
-
- public Form1()
- {
- InitializeComponent();
- }
-
- private void Form1_Paint(object sender, PaintEventArgs e)
- {
- Graphics g = e.Graphics;
- s1 = g.MeasureString(str1, new Font(this.Font.Name,20));
- //g.DrawString(str1, new Font(this.Font.Name, 20), Brushes.Blue, (ClientRectangle.Width-s1.Width)/2, (ClientRectangle.Height-s1.Height)/2);
- }
-
- private void button1_Click(object sender, EventArgs e)
- {
- brush1 = new SolidBrush(Color.Green);
- Graphics g = Graphics.FromHwnd(this.Handle);
- g.DrawString(str1, new Font(this.Font.Name, 20), brush1, 10, 10);
- }
-
- private void button2_Click(object sender, EventArgs e)
- {
- Graphics g = Graphics.FromHwnd(this.Handle);
- SizeF size = g.MeasureString(str1, new Font(this.Font.Name, 20));//获取字符串的尺寸
- PointF point = new PointF(10, 70);//左上角位置
- RectangleF rect = new RectangleF(point, size);//字符串显示的区域
- brush2 = new LinearGradientBrush(rect, Color.Red, Color.Blue, LinearGradientMode.Horizontal);
- g.DrawString(str1, new Font(this.Font.Name, 20), brush2, point);
- }
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
DrawString的第三个参数是画刷类型;Brushes.Blue,这么写也可以;
如果要自己定义画刷,不能这样,
Brush brush1 = new Brush();
因为Brush是抽象基类,要使用具体的画刷类;
brush1 = new SolidBrush(Color.Green);
这是实心画刷类;
brush2 = new LinearGradientBrush(rect, Color.Red, Color.Blue, LinearGradientMode.Horizontal);
这是线性渐变画刷类;使用此类需要 System.Drawing.Drawing2D 命名空间;
4个参数是:渐变的范围,渐变的开始颜色,渐变的结束颜色,渐变的方向;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。