自动调整大小的位图图片控件






3.23/5 (13投票s)
一个图片控件,它根据控件的大小显示图片,而不是图片的原始大小。
引言
对话框编辑器组件栏中提供的 Picture 控件非常适合在对话框中快速显示图片,但它只能以原始图片的大小显示图片。 如果你想显示必须与其它控件对齐的位图(例如,一个箭头的位图),就会出现问题。 如果你更改对话框字体大小,那么每个控件的大小和位置也会改变,但显示的位图大小不会改变,导致图片错位。 系统字体大小更改时也会出现此问题(Matrox Millennium 驱动程序允许你执行此操作)。
为了解决这个问题,我编写了一个从 CStatic
派生的类,它根据底层 CStatic
窗口的大小显示位图。 当字体大小改变时,CStatic
窗口大小改变,位图将被 StretchBlt 到新的大小。 这允许图像以小于或大于其原始大小的方式显示。
使用此类的最简单方法是将 CBitmapPicture
类添加到你的项目中,然后在你的对话框中创建一个 CStatic
对象,并将一个类型为 CBitmapPicture
的成员变量附加到该对象。 然后在你的 OnInitDialog
函数中,调用 CBitmapPicture::SetBitmap
来设置要使用的位图。
BOOL SetBitmap(UINT nIDResource); // Loads bitmap from resource ID BOOL SetBitmap(LPCTSTR lpszResourceName); // Loads bitmap from resource name BOOL SetBitmap(HBITMAP hBitmap); // Not recommended, as reloads can't
// be done