将 png 加载到 mfc 静态图片控件的代码有什么问题?


CImage image;
    image.Load(L"e:\final.png");  
    int width = image.GetWidth();
    int height  = image.GetHeight();
    SetWindowPos(NULL, 0, 0, width, height, SWP_NOZORDER | SWP_NOMOVE);
    HBITMAP hBmp = image.Detach();  
    CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC); 
    pWnd->SetBitmap(hBmp);  
    pWnd->SetWindowPos(NULL,   0,   0,   width, height, SWP_NOACTIVATE | SWP_NOZORDER);     

将上述代码添加到 mfc 生成的对话框的 initdialog 例程中。但是 png 没有显示。

正如我在评论中建议的那样,@Jichao报告了正确的解决方案。

寻找完整的示例,这可能会引导您找到解决方案,因为我认为这是窗口样式问题。应在静态控制资源定义中包含SS_BITMAP | SS_CENTERIMAGE样式。

请参阅 http://msdn.microsoft.com/en-us/library/vstudio/b7w5x74z.aspx

言论

位图将在静态控件中自动绘制。由 默认,它将绘制在左上角和静态 控件的大小将调整为位图的大小。

可以使用各种窗口和静态控件样式,包括:

SS_BITMAP 始终将此样式用于位图。

SS_CENTERIMAGE 用于在静态控件中居中显示图像。如果 图像大于静态控件,将被剪裁。如果是 小于静态控件,图像周围的空白区域将 由左上角像素的颜色填充 位图。

最新更新