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.mzph.cn/news/677706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于css-vars-ponyfill实现换肤

文章目录 一、换肤二、换肤调研2.1、ElementUI2.2、ant.design 三、换肤痛点和思考四、换肤架构五、换肤技术选型和实现5.1、该方案的亮点和规则5.2、核心原理5.3、色组 & 色值平台设计5.4、获取在当前主题自定义变量颜色 六、总结七、最后 一、换肤 网站或者应用一键切换…

最简单的基于 FFmpeg 的音频编码器(PCM 编码为 AAC)

最简单的基于 FFmpeg 的音频编码器(PCM 编码为 AAC) 最简单的基于 FFmpeg 的音频编码器(PCM 编码为 AAC)正文结果工程文件下载其他参考链接 最简单的基于 FFmpeg 的音频编码器(PCM 编码为 AAC) 参考雷霄骅…

Android SystemConfig相关

SystemConfig在哪里初始化 它声明在PackageManagerService类的静态方法main()中。在该方法中间定义Injector类对象时,作为它的构造参数。它是调用的SystemConfig.getInstance()实现初始化,之后能通过Injector类对象的getSystemConfig()得到SystemConfig类…

MongoDB聚合:$replaceWith

r e p l a c e W i t h ‘ 可以将输入文档替换为指定的文档。该操作可以替换输入文档的所有字段,包括 ‘ i d ‘ 字段。使用 ‘ replaceWith可以将输入文档替换为指定的文档。该操作可以替换输入文档的所有字段,包括_id字段。使用 replaceWith‘可以将输…

nginx添加lua模块

目录 已安装了nginx,后追加lua模块nginx 重新编译知识参考: 从零安装一、首先需要安装必要的库(pcre、zlib、openssl)二、安装LUA环境及相关库 (LuaJIT、ngx_devel_kit、lua-nginx-module)注意:…

Python和Java的区别(不断更新)

主要通过几个方面区分Python和Java,让大家有一个对比: 语言类型 Java是一种静态类型、编译型语言。 Python是一种动态类型、解释型语言,注重简洁和灵活的语法。 语法 在Java中,变量需要显式地声明,指定其类型。例如&am…

STM32——OLED(2)

目录 一、OLED显示屏介绍 引脚说明: 二、OLED驱动 1. 基本认识 2. OLED 驱动原理 及过程 三、SSD1306工作时序 (8080时序) 1. 8080并口读/写过程 2. SSD1306工作时序 (8080时序) 四、屏幕显示 1. GRAM 补: 2. 画点原理 3. 显示字…

一周学会Django5 Python Web开发-Django5创建项目(用PyCharm工具)

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频,包括:2024版 Django5 Python we…

【C++从0到王者】第四十一站:特殊类的设计

文章目录 一、设计一个类,不能被拷贝1.C98方法2.C11方法 二、设计一个类,只能在堆上创建对象1.析构函数私有化2.构造函数私有化 三、请设计一个类,只能在栈上创建对象四、设计一个类不能被继承1.C98方式2.C11方式 五、设计一个类,…

【JavaScript 漫游】【013】Date 对象知识点摘录

文章简介 本文为【JavaScript 漫游】专栏的第 013 篇文章,记录了 JS 语言中 Date 对象的重要知识点。 普通函数的用法构造函数的用法日期的运算静态方法,包括:Date.now()、Date.parse() 和 Date.UTC()实例方法,包括:…

H5/CSS 笔试面试考题(31-40)

简述CSS 样式,边距: 10px 20px 40px 30px ;哪一个是底边距 ( ) A:10px B:20px C:40px D:30px 面试通过率:45.0% 推荐指数: ★★★ 试题难度: 初级 试题类型&a…

JavaScript的原型与继承

原型 原型 prototype,我们所创建的每一个实例,解析器都会向这个函数中添加一个prototype,属性,这个属性会对应这个一个对象,这个对象就是原型对象(显式原型),原型对象就相当于一个公…

156基于Matlab的光纤陀螺随机噪声和信号

基于Matlab的光纤陀螺随机噪声和信号,利用固定步长和可调步长的LMS自适应滤波、最小二乘法、滑动均值三种方法进行降噪处理,最后用阿兰方差评价降噪效果。程序已调通,可直接运行。 156 信号处理 自适应滤波 降噪效果评估 (xiaohongshu.com)

YOLOv5改进 | 融合改进篇 | 华为VanillaNet + BiFPN突破涨点极限

一、本文介绍 本文给大家带来的改进机制是华为VanillaNet主干配合BiFPN实现融合涨点,这个主干是一种注重极简主义和效率的神经网络我也将其进行了实验, 其中的BiFPN不用介绍了从其发布到现在一直是比较热门的改进机制,其主要思想是通过多层级的特征金字塔和双向信息传递来提…

[office] Excel自带的编辑函数求和方法 #其他#媒体

Excel自带的编辑函数求和方法 今天小编为大家分享Excel自带的编辑函数求和方法,方法很简单的,对于不是很熟悉excel表格的朋友可以参考一下,希望能对大家有所帮助 很多同学以及上班族需要大量使用Excel这款表格编辑器,当表格中有大…

企业IT故障应急响应:四大关键控制点的精细管理

面对不断复杂的生产环境,如何围绕“故障发现、故障响应、故障定位、故障恢复”四个关键环节,进行多方面统筹建设,从而达到增加TBF和缩短TTR的目标? TBF(无故障时长)和TTR(故障修复时长&#xf…

论文笔记:相似感知的多模态假新闻检测

整理了RecSys2020 Progressive Layered Extraction : A Novel Multi-Task Learning Model for Personalized Recommendations)论文的阅读笔记 背景模型实验 论文地址:SAFE 背景 在此之前,对利用新闻文章中文本信息和视觉信息之间的关系(相似…

Bert与ChatGPT

1. Bert模型 BERT(Bidirectional Encoder Representations from Transformers)是一种预训练语言表示的方法,由Google AI在2018年提出。它标志着自然语言处理(NLP)领域的一个重大进步,因为它能够理解单词在…

CSP-202009-1-称检测点查询

CSP-202009-1-称检测点查询 解题思路 本题的时间复杂度貌似没有限制&#xff0c;直接暴力枚举就能知识盲点&#xff1a;sort()函数-升序排序 #include <algorithm>给名为dis&#xff0c;长度为n的数组排序sort(new_dis, new_dis n); #include <iostream> #inc…

第69讲后端登录逻辑实现

Admin实体&#xff1a; TableName("t_admin") Data public class Admin {TableId(type IdType.AUTO)private Integer id; // 编号private String userName; // 用户名private String password; // 密码TableField(select false)private String newPassword; // 新…