往一个Picture 的Static 控件里面添加,一个BMP图的代码是什么?

解决方案 »

  1.   

    CStatic * cwm=(CStatic *)GetDlgItem(IDC_CYL);
    CBitmap bmpload;
    bmpload.LoadBitmap(IDB_WM4);
    cwm->SetBitmap(HBITMAP(bmpload.Detach()));
      

  2.   

    可以在picture控件的属性的Type中选择Bitmap,然后在Image中选择需要的bmp的ID。
    如果需要动态改变图片,则添加如下代码:
    CStatic* pst=(CStatic*)GetDlgItem(IDC_STATIC_FRAME);   //PICTURE CONTROL ID CBitmap bit;         bit.LoadBitmap(IDB_BITMAP1);         pst->SetBitmap(bit);
      

  3.   

    提醒:CBitmap bit;这个变量最好定义为成员变量~~~~~~~
      

  4.   

    我这于有个类,可以不同方式显示   用的时候定义一个变量,然后 m_bmpimg.SetImage(IDB_BK);就可以了
    #if !defined(AFX_IMGWND_H__03C774F0_6584_11D6_8F32_00E04CE76240__INCLUDED_)
    #define AFX_IMGWND_H__03C774F0_6584_11D6_8F32_00E04CE76240__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // ImgWnd.h : header file
    ///////////////////////////////////////////////////////////////////////////////
    // CImgWnd window
    #define STRECH_1_1 0
    #define STRECH_FULL_X 1
    #define STRECH_FULL_Y   2
    #define STRECH_FULL 3
    #define STRECH_CENTER   4class CImgWnd : public CStatic
    {
    // Construction
    public:
    CImgWnd();
    void SetImage(UINT resID);
    void SetStrechType(int nStrechType);
    // Attributes
    protected:
    CBitmap m_bmpImage;
    int m_nStrechType;
    CRect m_rcSrc;
    CRect m_rcDst;
    // Operations
    public:

    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CImgWnd)
    //}}AFX_VIRTUAL// Implementation
    public:
    void SetImage(CString FileName);
    virtual ~CImgWnd(); // Generated message map functions
    protected:
    //{{AFX_MSG(CImgWnd)
    afx_msg void OnPaint();
    //}}AFX_MSG DECLARE_MESSAGE_MAP()
    };///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_IMGWND_H__03C774F0_6584_11D6_8F32_00E04CE76240__INCLUDED_)////////////////////下面是实现文件// ImgWnd.cpp : implementation file
    //#include "stdafx.h"#include "ImgWnd.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif/////////////////////////////////////////////////////////////////////////////
    // CImgWndCImgWnd::CImgWnd()
    {
    m_nStrechType = STRECH_FULL;
    }CImgWnd::~CImgWnd()
    {
    }
    BEGIN_MESSAGE_MAP(CImgWnd, CStatic)
    //{{AFX_MSG_MAP(CImgWnd)
    ON_WM_PAINT()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
    // CImgWnd message handlers
    void CImgWnd::SetImage(UINT resID)
    {
    m_bmpImage.LoadBitmap(resID);
    }void CImgWnd::SetImage(CString FileName)
    {
    HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),FileName,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE|LR_DEFAULTSIZE);
    ASSERT(hBitmap!=NULL);

        m_bmpImage.Attach(hBitmap);
    }
    void CImgWnd::SetStrechType(int nStrechType)
    {
    m_nStrechType = nStrechType; //重画
    Invalidate();
    }
    void CImgWnd::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting

    //获得窗口大小
    CRect r;
    GetClientRect(&r); //填充背景
    HBRUSH brush = (HBRUSH)::GetStockObject(GRAY_BRUSH); 
    ::FillRect(dc.m_hDC,&r,brush);
    dc.SetStretchBltMode(HALFTONE); //将位图选进设备场景中
    CDC memdc;
    memdc.CreateCompatibleDC( &dc );
    CBitmap* pOldBmp= memdc.SelectObject(&m_bmpImage);

    //获得位图参数
    BITMAP bmp;
    m_bmpImage.GetBitmap(&bmp); //开始缩放
    switch(m_nStrechType)
    {
    case STRECH_1_1://1:1
    dc.BitBlt(r.left,r.top,r.Width(),r.Height(),&memdc,0,0,SRCCOPY);
    break;
    case STRECH_FULL_X://按宽度
    dc.StretchBlt(r.left,r.top,r.Width(),bmp.bmHeight,&memdc,0,0,
    bmp.bmWidth,bmp.bmHeight,SRCCOPY);
    break;
    case STRECH_FULL_Y://按高度
    dc.StretchBlt(r.left,r.top,bmp.bmWidth,r.Height(),&memdc,0,0,
    bmp.bmWidth,bmp.bmHeight,SRCCOPY);
    break;
    case STRECH_FULL://充满窗口
    dc.StretchBlt(r.left,r.top,r.Width(),r.Height(),&memdc,0,0,
    bmp.bmWidth,bmp.bmHeight,SRCCOPY);
    break;
    case STRECH_CENTER://居中显示,大小为窗口的一半
    dc.StretchBlt(r.Width()/4,r.Height()/4,r.Width()/2,r.Height()/2,&memdc,0,0,
    bmp.bmWidth,bmp.bmHeight,SRCCOPY);
    break;
    }

    //还原
    memdc.SelectObject(pOldBmp);

    }
      

  5.   

    CStatic* pst=(CStatic*)GetDlgItem(IDC_STATIC_FRAME);   //PICTURE CONTROL ID CBitmap bit;         bit.LoadBitmap(IDB_BITMAP1);
             pst->SetBitmap(bit);
      

  6.   

    CStatic* pst=(CStatic*)GetDlgItem(IDC_STATIC_FRAME);   //PICTURE CONTROL ID CBitmap bit;         bit.LoadBitmap(IDB_BITMAP1);
             bit.LoadBitmap(IDB_BITMAP3);
             bit.LoadBitmap(IDB_BITMAP2);
             pst->SetBitmap(bit);为什么LoadBitmap 几次会出错?难道没有释放掉?