哪位大侠给补下基础知识!
现在要已知我的
1.屏幕尺寸(如20英寸)
2.显示分辨率(如1440*900)
3.也可用尺子量下具体的宽高(毫米为单位)
问题:
MS的字体以磅为单位
1.我如何知道在屏幕(X,Y)上一个特定磅值的汉字占用多少个像素(宽高),一个英文单字占用多少个像素
(如果我说的条件不够也请补足,最好结合上全角和半角),如何画一个矩形把它刚好包围(精确到一个像素)
2.在office系列里控件的windowleft属性又是以“缇”为单位,这个如何换算
这个问题放在这不知合适否,如有不妥,请包含!
[解决办法]
// 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");}
[解决办法]
调用GetDeviceCaps就可以了,参数hdc可以用GetDC(0),参数nIndex用如下几个:HORZSIZE、VERTSIZE获取物理屏幕宽、高(毫米,与设置的分辨率无关),HORZRES、VERTRES获取屏幕宽、高(像素,就是当前分辨率)。
注意获取的物理屏幕的尺寸与实际测量尺寸可能有出入,只能作为参考,尤其是未安装显示器的原配驱动程序的情况下。