以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 绘图添加文字背景留白 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=162258) |
||||
-- 作者:qaz17909 -- 发布时间:2021/4/10 22:33:00 -- 绘图添加文字背景留白 用窗口绘图,想在一个有颜色的背景图片上添加文字,因为背景的颜色不固定,所以希望添加文字的时候可以将文字区域部分留白然后再添加,应如何实现。如果先绘制一个空白区域,然后再添加文字,就是前面的空白区域无法根据文字的多少调整宽度。 Dim p As WinForm.Painter = e.Form.Controls("Painter1") Dim g As Graphics = p.Graphics g.FillRectangle(Brushes.Red,0,0,200,200) p.Repaint() Dim fnt As New Font("宋体",16) Dim msg As String = "I Like Foxtable" g.DrawString(msg,fnt,Brushes.green,10,10) p.Repaint() |
||||
-- 作者:有点蓝 -- 发布时间:2021/4/11 20:39:00 -- 计算文字需要绘制的大小 Dim p As WinForm.Painter = e.Form.Controls("Painter1") Dim g As Graphics = p.Graphics Dim fnt As New Font("宋体",16) Dim msg As String = "I Like Foxtable" dim w as integer = 100 \'需要绘制的宽度 Dim size As Object size = g.MeasureString(msg, fnt, w) Dim h As Integer = size.height ‘获取绘制指定字体和宽度的情况下需要的高度 g.FillRectangle(Brushes.Red,0,0,w+10,h+10 g.DrawString(msg,fnt,Brushes.green,10,10) p.Repaint() |
||||
-- 作者:qaz17909 -- 发布时间:2021/4/12 11:20:00 -- 这个好像无法达到根据字符宽度调节底板空白宽度的目的,不同字符宽度都一样,高度是可以自动调节了 |
||||
-- 作者:有点蓝 -- 发布时间:2021/4/12 11:33:00 -- 只能是固定一个宽度,然后动态计算高度 |
||||
-- 作者:qaz17909 -- 发布时间:2021/4/12 11:38:00 -- 可否固定高度,调整宽度 |
||||
-- 作者:有点蓝 -- 发布时间:2021/4/12 11:52:00 -- 不能 |
||||
-- 作者:qaz17909 -- 发布时间:2021/4/20 22:50:00 -- 还有个问题,用 Dim p As
WinForm.Painter = e.Form.Controls("Painter1") 给背景图片添加文字后然后用p.save()将其保存为图片后,发现添加的文字变模糊了,是不是整个图分辨率下降了,这个有什么办法能保存保持清晰度呢?
|
||||
-- 作者:有点蓝 -- 发布时间:2021/4/20 23:04:00 -- 保存为bmp格式文件 |
||||
-- 作者:qaz17909 -- 发布时间:2021/4/21 9:06:00 -- 生成图片报表的时候,还是变模糊了。见示例。
|
||||
-- 作者:有点蓝 -- 发布时间:2021/4/21 9:21:00 -- 这个不是绘图的问题。是专业报表本身的问题,这个没有办法。 如果要在专业报表里使用,可以考虑直接在专业报表里绘制内容,不需要绘图板:http://www.foxtable.com/webhelp/topics/1232.htm
[此贴子已经被作者于2021/4/21 9:22:13编辑过]
|