C#在窗体正中输出文字以及输出文字的画刷使用

为了在窗体正中输出文字,需要获得输出文字区域的宽和高,这使用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);
        }
    }
}

 

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个参数是:渐变的范围,渐变的开始颜色,渐变的结束颜色,渐变的方向;

相关推荐

  1. C# 打印输出以及文件输入输出

    2024-02-11 06:10:01       20 阅读
  2. c++基于流文件输入输出综合程序设计

    2024-02-11 06:10:01       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-11 06:10:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-11 06:10:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-11 06:10:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-11 06:10:01       20 阅读

热门阅读

  1. redis单线程还快的原因

    2024-02-11 06:10:01       29 阅读
  2. 【讨论】C语言提高之指针表达式

    2024-02-11 06:10:01       23 阅读
  3. leetcode - 368. Largest Divisible Subset

    2024-02-11 06:10:01       25 阅读
  4. 从零开始:用 Rust 编写你的第一个 Web 服务

    2024-02-11 06:10:01       28 阅读
  5. 如何为Kafka加上账号密码(二)

    2024-02-11 06:10:01       31 阅读
  6. C#系列-C#访问MongoDB+redis+kafka(7)

    2024-02-11 06:10:01       32 阅读
  7. 最小生成树——Prim/Kruskal Python

    2024-02-11 06:10:01       25 阅读
  8. 迟旧迎新感悟

    2024-02-11 06:10:01       23 阅读
  9. MySQL中drop、delete与trancate的区别

    2024-02-11 06:10:01       26 阅读
  10. mysql RR、RC隔离级别实现原理

    2024-02-11 06:10:01       25 阅读