当前位置: 首页 > article >正文

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


http://www.kler.cn/a/234689.html

相关文章:

  • docker 搭建集群
  • FFmpeg来从HTTP拉取流并实时推流到RTMP服务器
  • Python的安装过程和环境搭建(超详细过程)
  • 【Linux】centos7安装php7.4
  • 【AIGC-ChatGPT进阶副业提示词】星际占卜师:探索星象能量的艺术【限时免费阅读,一天之后自动进入进阶课程】
  • AIA - IMSIC之二(附IMSIC处理流程图)
  • 单片机学习笔记---蜂鸣器播放提示音音乐(天空之城)
  • 物联网和工业4.0
  • 算法-3-基本的数据结构
  • QT+OSG/osgEarth编译之八十四:osgdb_osg+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_osg)
  • RabbitMQ——构建高性能消息传递的应用
  • 彩虹系统7.0免授权+精美WAP端模板源码
  • 基于微信小程序的校园故障维修管理系统的研究与实现
  • 探索NLP中的N-grams:理解,应用与优化
  • 【Web】Spring rce CVE-2022-22965漏洞复现学习笔记
  • 《CSS 简易速速上手小册》第8章:CSS 性能优化和可访问性(2024 最新版)
  • 格式化dingo返回内容
  • 算法竞赛进阶指南——基本算法(倍增)
  • NGINX upstream、stream、四/七层负载均衡以及案例示例
  • python从入门到精通(十八):python爬虫的练习案列集合
  • 【高阶数据结构】B-树详解
  • 如何入门AI Agent?
  • C++函数对象-运算符函数对象 - 逻辑运算 - 实现 !x 的函数对象 (std::logical_not)
  • Java 集合、迭代器
  • 跟着cherno手搓游戏引擎【24】开启2D引擎前的项目总结(包括前置知识汇总)
  • 【大厂AI课学习笔记】【1.6 人工智能基础知识】(2)机器学习