哪位大侠给补下基础知识!

thllv 2010-03-22 12:08:39
现在要已知我的
1.屏幕尺寸(如20英寸)
2.显示分辨率(如1440*900)
3.也可用尺子量下具体的宽高(毫米为单位)
问题:
MS的字体以磅为单位
1.我如何知道在屏幕(X,Y)上一个特定磅值的汉字占用多少个像素(宽高),一个英文单字占用多少个像素
(如果我说的条件不够也请补足,最好结合上全角和半角),如何画一个矩形把它刚好包围(精确到一个像素)
2.在office系列里控件的windowleft属性又是以“缇”为单位,这个如何换算

这个问题放在这不知合适否,如有不妥,请包含!

...全文
156 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
thllv 2010-03-22
  • 打赏
  • 举报
回复
收到!
感谢!
  • 打赏
  • 举报
回复
调用GetDeviceCaps就可以了,参数hdc可以用GetDC(0),参数nIndex用如下几个:HORZSIZE、VERTSIZE获取物理屏幕宽、高(毫米,与设置的分辨率无关),HORZRES、VERTRES获取屏幕宽、高(像素,就是当前分辨率)。
注意获取的物理屏幕的尺寸与实际测量尺寸可能有出入,只能作为参考,尤其是未安装显示器的原配驱动程序的情况下。
thllv 2010-03-22
  • 打赏
  • 举报
回复
大侠再解释下:
如何读出当前的屏幕设置
不胜感谢!
thllv 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 delphiguy 的回复:]
在windows的定义中,1磅=72DPI下的一个像素,72DPI就是每英寸72个点(对于显示器就是像素)。
假设你的显示设置到标准小字体(96DPI),那么此时1磅=96/72=1.33像素。另外,1缇=0.05磅,1英寸=0.0254米。
[/Quote]

言简意赅!
就是一个字-“崇拜”
呵呵!
  • 打赏
  • 举报
回复
在windows的定义中,1磅=72DPI下的一个像素,72DPI就是每英寸72个点(对于显示器就是像素)。
假设你的显示设置到标准小字体(96DPI),那么此时1磅=96/72=1.33像素。另外,1缇=0.05磅,1英寸=0.0254米。
thllv 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hemiya 的回复:]
C/C++ code

// 1
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//Canvas->Font 首先设置字体,大小.才能知道你需要知道的字体的宽高
int cn_h = Canvas->TextHeight("中");
int cn_w = Canvas->T……
[/Quote]

还是要谢谢,这样1应该是解决了
thllv 2010-03-22
  • 打赏
  • 举报
回复
这样是已知字体得到像素

我要让在不同的显示器(分辨率和屏幕大小都未知)上一个汉字显示相同的大小如1cm
如何去换算 磅、英寸、“缇”及和公制(米)的关系
公式是什么?
hemiya 2010-03-22
  • 打赏
  • 举报
回复

// 1
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//Canvas->Font 首先设置字体,大小.才能知道你需要知道的字体的宽高
int cn_h = Canvas->TextHeight("中");
int cn_w = Canvas->TextWidth("中");
int en_h = Canvas->TextHeight("A");
int en_w = Canvas->TextWidth("A");
}

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧