| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 672 人关注过本帖, 1 人收藏
标题:VFP中GDI+中遇到的问题
取消只看楼主 加入收藏
ly504
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-11-19
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:3 
VFP中GDI+中遇到的问题
在用GDI打印文字时,我想用gpGraphics中的measurestringa来测量文字的宽度和高度,但怎么样试都没有用,不知道有没有大神能给给予指导。用其他语言很容易,但VFP中好多类型没有,实在搞不定。求求了!
搜索更多相关主题的帖子: 类型 VFP 文字 语言 GDI 
2023-11-04 13:36
ly504
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-11-19
收藏
得分:0 
form.init:
DECLARE integer CreateCompatibleDC IN gdi32 integer
DECLARE integer DeleteDC IN gdi32 integer
Set ClassLib To "_gdiplus.vcx"
PUBLIC loGraphics ,lfont
loGraphics = CreateObject("gpGraphics") &&创建画布对象
lfont=CreateObject("gpfont")


form.计算文字宽:
PARAMETERS 计算文本,字体名称,字体大小,字体风格
LOCAL _图形,mdc_id,_文本矩形,_字体
mdc_id=CreateCompatibleDC(0)
IF mdc_id=0

    RETURN 0
ENDIF
PUBLIC a,c,d,rect
rect=NEWOBJECT("gprectangle")
IF loGraphics.CreateFromHDC(mdc_id)
    lfont.Create(字体名称,字体大小,字体风格,2)
    a=loGraphics.MeasureStringw(计算文本,lfont,@rect,,@c,@d)
ENDIF
?c,d


command.click:
thisform.计算文字宽("微软雅黑微软雅黑","微软雅黑",30,)


想要结果:文字相关字体和字号下出来的宽度,但出不来。
出来的是
8   1


?a
结果是
对象

[此贴子已经被作者于2023-11-6 08:57编辑过]

2023-11-05 22:34
ly504
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-11-19
收藏(1)
得分:0 
回复 5楼 sych
sych哥,你好,辛苦了。
你这用纯代码方式解决,也是一条思路。
但有一个问题你这个只取了有文字像素存在的区域,但文字中间都是有留白空间的,所以会导致出现一个状况,字符串两头的留白空间没有取到,但中间的却取到了
比如一个字和多个字,宽度不是倍数关系,再比如竖“丨”这个中文字,他只取了有像素的区域,所以没有达到我想要的那个效果
我试了一下,比如
同样是“宋体”和“127号”字的情况,
“丨”,w=12
“丿”,w=36
“我”,w=116
“我要”,w=245
“我要测”,w=372
小数点后的位数没写
是否有解决方法呢?
2023-11-06 12:36
ly504
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-11-19
收藏(1)
得分:0 
谢谢大家,我现在对_gdiplus.vcx类中的gpgraphics进行了重定义后,已经可以返回正确值了,谢谢你们,有你们真好。
2023-11-06 22:05
快速回复:VFP中GDI+中遇到的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017699 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved