想做一个透明时钟,初步想法是这样的:
1.获取dc,并把背景设成透明。
2.启动路径(BeginPath),用TextOut输出时间。
3.结束路径(EndPath),从路径获取区域(PathToRegion),并把该区域设为窗口的显示区域(SetWindowRgn)。
按照这个步骤做一遍,没有效果,从路径获取区域时失败。参考了网上的资料,为dc选择一个字体(比如宋体)之后就成功了。
随后做了个小实验用于确认字体和路径的关系。
字体有三种类型:
DEVICE_FONTTYPE
RASTER_FONTTYPE
TRUETYPE_FONTTYPE
枚举了我电脑上的字体,发现没有DEVICE_FONTTYPE这种类型的字体。
用RASTER_FONTTYPE类型的字体去创建路径都是失败的(dc默认的字体是System,它的类型就是RASTER_FONTTYPE)。
用TRUETYPE_FONTTYPE类型的字体创建路径,基本都是好的,除了"宋体-PUA"。后来发现是因为这种字体不能显示纯数字或字母,即文本中必须包含汉字才能显示。