C++ 如何缩小位图以适应静态控件?

C++ 如何缩小位图以适应静态控件?,c++,winapi,bitmap,C++,Winapi,Bitmap,我有一个位图,我想把它放到一个静态控件中。我将静态控件作为SS\u位图样式,当我使用\u staticControl.SetBitmap(myBitmap.Detach())方法时,静态控件的大小将调整为位图中比该控件大的区域。我知道SS_BITMAP样式会自动调整控件的大小,但是如何缩小位图以适应静态控件?我尝试过使用SS\u REALSIZECONTROL样式,但这根本不显示位图。有没有其他我应该采用的风格 标题所问的问题与问题的主体大不相同。看起来您已经知道如何在静态控件中显示位图,而实际

我有一个位图,我想把它放到一个静态控件中。我将静态控件作为
SS\u位图
样式,当我使用
\u staticControl.SetBitmap(myBitmap.Detach())
方法时,静态控件的大小将调整为位图中比该控件大的区域。我知道
SS_BITMAP
样式会自动调整控件的大小,但是如何缩小位图以适应静态控件?我尝试过使用
SS\u REALSIZECONTROL
样式,但这根本不显示位图。有没有其他我应该采用的风格

标题所问的问题与问题的主体大不相同。看起来您已经知道如何在静态控件中显示位图,而实际的问题是如何缩小位图以适应静态控件。静态控件不会自动缩放位图(没有用于此的样式),因此如果需要,您需要自己进行缩放
StretchBlt
将执行您需要的操作;对静态控件进行子类化并处理其
WM_PAINT
消息。是否仍然可以调整位图的大小并在不对控件进行子类化的情况下仍使用
SetBitmap()
?位图是我想在控件上显示它之前拍摄的屏幕截图。是的,但它仍然涉及
StretchBlt
。您只需将其绘制到选定的新位图上,并将其保存到临时(内存)DC中,然后将其保存为调整大小的位图,删除原始位图。就像上面说的,但是你将使用
StretchBlt
来缩小它,而不是
BitBlt
(它将以1:1的比例绘制)。同样,绘制可能是一种更简单的方法,你仍然可以自己绘制,但没有子分类标题会问与问题主体不同的问题。看起来您已经知道如何在静态控件中显示位图,而实际的问题是如何缩小位图以适应静态控件。静态控件不会自动缩放位图(没有用于此的样式),因此如果需要,您需要自己进行缩放
StretchBlt
将执行您需要的操作;对静态控件进行子类化并处理其
WM_PAINT
消息。是否仍然可以调整位图的大小并在不对控件进行子类化的情况下仍使用
SetBitmap()
?位图是我想在控件上显示它之前拍摄的屏幕截图。是的,但它仍然涉及
StretchBlt
。您只需将其绘制到选定的新位图上,并将其保存到临时(内存)DC中,然后将其保存为调整大小的位图,删除原始位图。正如它所说,但是您将使用
StretchBlt
来收缩它,而不是
BitBlt
(它将以1:1的大小绘制)。同样,SS_OWNERDRAW可能是一种更简单的方法,您仍然自己进行StretchBlt,但没有子类化