65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.23/5 (13投票s)

1999年11月21日

CPOL

1分钟阅读

viewsIcon

152886

downloadIcon

4820

一个图片控件,它根据控件的大小显示图片,而不是图片的原始大小。

Sample Image

引言

对话框编辑器组件栏中提供的 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
© . All rights reserved.