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

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.lryc.cn/news/298038.html

相关文章:

  • 二十、K8S-1-权限管理RBAC详解
  • 【PTA|期末复习|编程题】数组相关编程题(一)
  • [office] 怎么在Excel2003菜单栏自定义一个选项卡 #其他#微信#知识分享
  • 面试 JavaScript 框架八股文十问十答第六期
  • 【Web】小白友好的Java内存马基础学习笔记
  • Rust猜数字游戏
  • .gitlab-ci.yml文件参数配置和使用
  • Go语言从基础到高级-目录
  • Linux CentOS stream 9 alias
  • WebSocketServer+redis实时更新页面数据
  • 快速掌握Vue.js框架:从入门到实战
  • ###C语言程序设计-----C语言学习(11)#数据的存储和基本数据类型
  • 机器学习案例1:利用 Python 将语音转换为文本
  • 杨辉三角的变形(数学)
  • YOLOv5改进 | 融合改进篇 | 华为VanillaNet + BiFPN突破涨点极限
  • C++初阶篇----新手进村
  • 假期刷题打卡--Day26
  • 159基于matlab的基于密度的噪声应用空间聚类(DBSCAN)算法对点进行聚类
  • CVPR 2023: GANmouflage: 3D Object Nondetection with Texture Fields
  • 【ASP.NET Core 基础知识】--部署和维护--日志记录和错误处理
  • docker命令梳理
  • 彩虹系统7.0免授权+精美WAP端模板源码
  • linux系统haproxy负载均衡工具的介绍以及使用
  • 七、Nacos源码系列:Nacos服务发现
  • Vue源码系列讲解——模板编译篇【一】(综述)
  • 【机器学习】数据清洗之识别异常点
  • MacOS 制作 TF 卡/ U 盘镜像
  • 怎么用postman调用webservice(反推SoapUI)
  • 【开源】JAVA+Vue.js实现衣物搭配系统
  • 【Flask + AI】接入CHATGLM API 实现翻译接口