用C#调用windows系统的createfont,创建自定义高度和宽度的字体,然后用Font.FromHfont方法定义逻辑字体,供DrawString绘制字符,但字符宽度却不起作用,请问大侠是方法问题,还是GDI+就是不能绘制指定高度和宽度的字符。
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

首页/
已采纳
用GDI+绘制指定高度和宽度的字符
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
幸福快乐着 2017-06-15 21:11关注自已回答吧,经过几天的查阅资料,基本上可以得出:
GDI+的DrawString绘制字符方法,不支持自定义高和宽,字体只有一个Size属性。解决方法:(源自http://bbs.csdn.net/topics/260081882)思路. 将字转发为GraphicsPath, 变形该GraphicsPath. 再将该GraphicsPath画出来.
C# code
Graphics g = this.CreateGraphics();
g.SmoothingMode = SmoothingMode.HighQuality;
GraphicsPath path = new GraphicsPath();
StringFormat strformat = new StringFormat();
strformat.Alignment = StringAlignment.Center;
strformat.LineAlignment = StringAlignment.Center;
path.AddString("中国", new FontFamily("黑体"), (int)this.Font.Style, 100f, new Point(250,250), strformat);
Matrix m=new Matrix();
m.Scale(1f,0.2f); //压扁
path.Transform(m);
g.FillPath(new SolidBrush(Color.Red), path);
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2020-04-02 02:57/// /// 绘制文字自动换行 /// /// 绘图图面 /// 绘制文本 /// 绘制字体 /// 字体颜色 ... /// 最大宽度,达到最大宽度则换行 /// 起始坐标 /// 段落高度间隔 /// 字体间隔</param>
- 2022-09-20 08:12它需要一个`Font`对象定义字体样式,一个`Brush`对象决定文本颜色,以及要绘制的字符串和位置坐标。例如: ```csharp Font myFont = new Font("Arial", 14); SolidBrush blackBrush = new SolidBrush(Color.Black...
- 2022-10-28 08:232. **创建画布**:创建一个`Bitmap`对象作为画布,设置其宽度和高度,这将决定验证码图片的大小。 3. **设置颜色和字体**:使用`SolidBrush`和`Font`对象设置验证码文本的颜色和字体样式。你可以选择多种颜色和字体...
- 2015-11-23 17:34VB6&GDI+实现精准中英字符测绘,可自定义行距字距。本人写的试验代码,有大量BUG。测绘之中有少许的浮点误差——这是字体设计单位浮点计算造成的,不可避免. ...字符宽度可以用MeasureDriverString测出,很简单。
- 2023-12-18 02:02清水迎朝阳的博客 需求: 用户实际头像是长方形的,现在要绘制一个圆形的头像显示解决方法:在原图像上,添加一个圆形蒙版,圆形区域是透明的,其它是背景色。
- 2021-07-26 06:56usdoc文档在线预览解析的博客 //绘制实线 using (Pen pen = new Pen(Color.Black, 2)) { pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; //实线 graphics.DrawLine(pen,0,10,100,10); } //画出虚线 using (Pen pen = new Pen...
- 2014-10-31 07:12weixin_30681615的博客 一段字符串中可能既有汉字又有字母,对于汉字和字母分别采用不同的字体进行绘制直接po代码了 Bitmap bmp = new Bitmap(iWidth, iHeight); Graphics g = Graphics.FromImage(bmp); g.SmoothingMode = System....
- 2014-01-22 08:13CreatedSign的博客 下面用一个简单的例子来说明在GDI+中如何获取字符串占用的宽度和高度 简单来说就是调用Graphics对象的MeasureString函数,下面是一个简单的例子 //创建Graphics对象 CPaintDC dc(this); Graphics gra...
- 2023-05-19 06:46beibaoke910的博客 ,所以直接单单用这个方法不能满足我们的需求。此外, Graphics类还有个。方法可以改变坐标的原点,而且这个方法是沿着矩形的x,y轴。想要绘制如下所示的斜体字,45度。但是这个方法的旋转中心是画板的。方法,可以...
- 2019-08-09 08:02GreAmbWang的博客 用Graphics中的MeasureString方法 使用 SizeF sizeF = g.MeasureString(text, font);
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司