±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 244  |  »Ø¸´: 1
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

yyxhhx

½ð³æ (СÓÐÃûÆø)

[½»Á÷] ¡¾×ªÌû¡¿VCʵÏÖ´ò¿ªBMP JPG»òGIFͼƬ

VCʵÏÖ´ò¿ªBMP JPG»òGIFͼƬ£¨¶þ£©|VC/MFC/´ò¿ªÍ¼Æ¬2008-07-18 13:06    ֮ǰд¹ýһƪÎÄÕ¹ØÓÚVCÖдò¿ªÍ¼Æ¬ÎļþµÄÎÄÕ£¬ÄǸö²»ÊǺܺÃÀí½â£¬ÀïÃæÓÐЩµØ·½ÏÔµÃÓеãÂÒ£¬Õâ¸ö°æ±¾µÄÒªÈÝÒ×Àí½âÒ»µã£¬²»¶à˵ÁË£¬ÎÒÃÇ¿ªÊ¼°É¡£ Ô´ÎļþÏÂÔØ£ºShowBitmap.rar

1¡¢Ð½¨Ò»¸öµ¥ÎĵµµÄÓ¦ÓóÌÐò£¬ÏîÄ¿Ãû³ÆÎªShowBitmap

2¡¢ÎªCShowBitmapViewÀàÌí¼ÓÏÂÊö³ÉÔ±±äÁ¿ºÍ³ÉÔ±º¯Êý£ºÆäÖÐCImage m_MyImageÐèҪͷÎļþ"atlimage.h"µÄÖ§³Ö,»òÕßÄã¿ÉÒÔÓÃÏòµ¼À´¼ÓÕâ¸ö±äÁ¿£¬ÄÇôͷÎļþ»á×Ô¶¯Ìí¼ÓµÄ£¬ÎÒÃÇÕâÀïÊÖ¶¯ÔÚCShowBitmapView.hÖмÓÈë#include "atlimage.h"£¬Ò»¶¨Òª¼ÇµÃ¼ÓÕâ¸ö¡£

//²ÎÊý¶¨Òå
public:
    CString strPicPath;    //´ò¿ªµÄͼƬÎļþÎļþÃû
    CString extname;    //´ò¿ªµÄͼƬÎļþµÄÀ©Õ¹Ãû
    CBitmap m_bitmap;    //´´½¨Î»Í¼¶ÔÏó
    CImage m_MyImage;    //ÓÃÓÚ¶ÁÈ¡ÓëÏÔʾjpgµÈ¸ñʽµÄͼÏñÎļþ
    void ShowBitmap(CDC* pDC,CString strPicPath);    //ÓÃÀ´ÏÔʾָ¶¨Î»Í¼µÄº¯Êý
    void ShowPic(CDC* pDC,CString picName);

3¡¢ÎªID_FILE_OPENÏûÏ¢Ìí¼ÓÏìÓ¦º¯Êý£¨¾ßÌåÔõô¼Ó¾Í²»Ï¸ËµÁË£©£¬±àд¸Ãº¯Êý(´úÂëÈçÏÂ)

void CShowBitmapView::OnFileOpen()
{
    //CFileDialog dlg(TRUE,_T("BMP",_T("*.BMP",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("λͼÎļþ(*.BMP;*.jpg)|*.BMP;*.jpg|");
    CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("ͼƬÎļþ(*.jpg;*.jpeg;*.gif;*.bmp)|*.jpg;*.jpeg;*.gif;*.bmp|λͼÎļþ(*.BMP)|*.BMP||");
    if (IDOK==dlg.DoModal())
    {
        strPicPath.Format(_T("%s",dlg.GetPathName());
        extname = dlg.GetFileExt();             //·µ»ØÑ¡¶¨ÎļþµÄÀ©Õ¹ÎļþÃû
        extname.MakeLower();        //½«ºó׺Ãû±ä³ÉСдµÄ
        Invalidate();
    }
}

4¡¢±àдBMPͼƬÏÔʾº¯Êý

void CShowBitmapView::ShowBitmap(CDC* pDC,CString strPicPath)
{        
    HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,strPicPath,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
    m_bitmap.Detach();
    m_bitmap.Attach(hBitmap);

    CRect rect;
    GetClientRect(&rect);

    CDC dcImage;
    if (!dcImage.CreateCompatibleDC(pDC))
    {
        return;
    }
    BITMAP bm;
    m_bitmap.GetBitmap(&bm);
    dcImage.SelectObject(&m_bitmap);
    //pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY); //ͼƬ±£Áôԭʼ´óС
    pDC->StretchBlt(0,0,rect.right,rect.bottom,&dcImage,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY); //ͼƬÀ­ÉìÏÔʾ£¬ÌîÂúÕû¸ö¿Í»§Çø
}
5¡¢±àдJPGµÈͼƬÏÔʾº¯Êý£¨´Ë´¦Î´ÁгöÈ«ÆÁ²é¿´Í¼Æ¬µÄ´úÂ룬ÐèÒªÕ⹦Äܵϰ£¬Çë²Î¿´Drawº¯ÊýµÄÏà¹Ø×ÊÁÏ£©

void CShowBitmapView::ShowPic(CDC* pDC,CString strPicPath)
{        
    if(!m_MyImage.IsNull())
        m_MyImage.Destroy();
    HRESULT hResult=m_MyImage.Load(strPicPath);
    int iWidth=m_MyImage.GetWidth();
    int iHeight=m_MyImage.GetHeight();
    m_MyImage.Draw(pDC->m_hDC,0,0,iWidth,iHeight);
}
6¡¢ÐÞ¸ÄOnDrawº¯Êý£¬ÊµÏÖͼƬµÄÏÔʾ

void CShowBitmapView::OnDraw(CDC* pDC)
{
    CShowBitmapDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    if (0 == extname.Compare(_T("bmp"))
    {
        ShowBitmap(pDC,strPicPath);
    }
    else
    {
        if (0 == extname.Compare(_T("jpg")||0 == extname.Compare(_T("jpeg")||0 == extname.Compare(_T("gif"))
        {
            ShowPic(pDC,strPicPath);
        }
    }


7¡¢½áÊøÓï:

    ¸ÐÐËȤµÄÅóÓÑ£¬¿ÉÒÔ°ÑÉÏÃæÁ½¸öͼƬÏÔʾº¯ÊýºÍOnDrawÖеÄIfÓï¾ä²¿·ÖºÏ²¢³ÉÒ»¸öº¯Êý¡£Ï£Íû±¾ÎÄÄܸøÄãÃÇ´øÀ´µã°ïÖú£¬ÓÐʲôÎÊÌâµÄ»°Ò²ÇëÖ¸Õý¡£

8¡¢²¹³ä£º

    ³ÌÐòÖÐÓеãСÎÊÌâ¾ÍÊÇ£¬µ±Í¼Æ¬À­ÉìÏÔʾµÄʱºò¿ÉÄÜ»á³öÏÖÊ§ÕæµÄÇé¿ö£¬Ò»°ãÊÇBMP¸ñʽµÄͼƬËõС¡¢JPGÎļþÀ­Éìʱ»áÊ§Õæ£¬ÕâʱºòÔÚʹÓÃStretchBltº¯Êý»òÕßDrawº¯ÊýǰÐèÒªµ÷ÓÃSetStretchBltModeº¯Êý£¬¶ÔÓÚÉÏÃæ³ÌÐòµÄÐ޸ķ½·¨ÊÇ£º

1£©ÔÚShowBitmap(CDC* pDC,CString strPicPath)º¯ÊýÖÐ

pDC->StretchBlt(0,0,rect.right,rect.bottom,&dcImage,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);Ç°Ãæ¼ÓÈë

    pDC->SetStretchBltMode(STRETCH_HALFTONE);

2£©ÔÚShowPic(CDC* pDC,CString strPicPath)º¯ÊýÖÐ

m_MyImage.Draw(pDC->m_hDC,0,0,rect.right,rect.bottom,0,0,iWidth,iHeight);Ç°Ãæ¼ÓÈë

   ::SetStretchBltMode(pDC->m_hDC,HALFTONE);»òÕß

   pDC->SetStretchBltMode(STRETCH_HALFTONE);

ÕâÀïµÄDraw¸úÉÏÃæµÄÓе㲻һÑù£¬Õâ¸öʵÏÖÁËͼƬÌîÂúÕû¸öView£¬¼´È«ÆÁÏÔʾ¡£

ºÃÁË£¬¾ÍÕâÑù°É£¬ÓÐÎÊÌâÇëÖ±½ÓÔÚÆÀÂÛÀï˵Ã÷£¬Ï£ÍûÄܵõ½ÅóÓÑÃǵķ´À¡ÐÅÏ¢
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

yyxhhx

½ð³æ (СÓÐÃûÆø)

²»Òª»ØÌûÁË ±¾ÈËÍ˳öÁË£¬Ã»¿Õ
2Â¥2009-08-29 13:01:46
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ yyxhhx µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Ò»Ö¾Ô¸±±¾©»¯¹¤´óѧ²ÄÁÏÓ뻯¹¤£¨085600£©296Çóµ÷¼Á +12 µ¾ÆÞС±à 2026-03-26 12/600 2026-03-29 01:04 by ÎÒÊÇС¿µ
[¿¼ÑÐ] ¸÷λÀÏʦºÃ£¬ÎÒµÄһ־ԸΪ±±¾©¿Æ¼¼´óѧ085601²ÄÁÏר˶ +7 Koxui 2026-03-28 7/350 2026-03-29 00:58 by ÎÒÊÇС¿µ
[¿¼ÑÐ] 11408Èí¼þ¹¤³ÌÇóµ÷¼Á +3 Qiuѧing 2026-03-28 3/150 2026-03-28 21:50 by zhq0425
[¿¼ÑÐ] ѧ˶274Çóµ÷¼Á +9 LiÀîÓã 2026-03-26 9/450 2026-03-28 21:42 by bymhappy
[¿¼ÑÐ] 321Çóµ÷¼Á +6 è±Óñ~~ 2026-03-25 7/350 2026-03-28 17:48 by è±Óñ~~
[¿¼ÑÐ] 275Çóµ÷¼Á +10 Micky11223 2026-03-25 14/700 2026-03-28 15:48 by Micky11223
[¿¼ÑÐ] 394Çóµ÷¼Á +3 ºÃʶàÄ¥¾²ºò¼ÑÒ 2026-03-26 5/250 2026-03-28 14:24 by ÌÆãå¶ù
[¿¼ÑÐ] 0703Ò»Ö¾Ô¸9£¬³õÊԳɼ¨£º338£¬ËÄÁù¼¶Òѹý£¬ÓпÆÑо­Àú£¬Çóµ÷¼Á£¡ +4 Zuhui0306 2026-03-25 4/200 2026-03-28 13:07 by ÌÆãå¶ù
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤£¨0856£©304ÇóBÇøµ÷¼Á +8 Çñgl 2026-03-27 8/400 2026-03-28 12:42 by ÌÆãå¶ù
[¿¼ÑÐ] 286Çóµ÷¼Á +12 PolarBear11 2026-03-26 12/600 2026-03-28 12:14 by zllcz
[¿¼ÑÐ] ҩѧ105500Çóµ÷¼Á +3 Ssun¡£¡£ 2026-03-28 3/150 2026-03-28 11:24 by lxf170613
[¿¼ÑÐ] 328Çóµ÷¼Á +7 àŵεĻù±¾¶¼ 2026-03-27 7/350 2026-03-28 04:19 by fmesaito
[¿¼ÑÐ] »¯Ñ§308·ÖÇóµ÷¼Á +8 ÄãºÃÃ÷ÌìÄãºÃ 2026-03-23 9/450 2026-03-27 14:01 by Ñî¹âÓÚÇàÔÆ
[¿¼ÑÐ] 0703»¯Ñ§338Çóµ÷¼Á£¡ +6 Zuhui0306 2026-03-26 7/350 2026-03-27 10:35 by shangxh
[¿¼ÑÐ] Ò»Ö¾Ô¸ ÄϾ©Óʵç´óѧ 288·Ö ²ÄÁÏ¿¼ÑÐ Çóµ÷¼Á +3 jl0720 2026-03-26 3/150 2026-03-26 13:39 by zzll406
[¿¼ÑÐ] »¯Ñ§µ÷¼ÁÒ»Ö¾Ô¸ÉϺ£½»Í¨´óѧ336·Ö-±¾¿ÆÉϺ£211 +4 СÓã°®Óлú 2026-03-25 4/200 2026-03-26 10:19 by aa331100
[¿¼ÑÐ] ÍøÂç¿Õ¼ä°²È«0839Õе÷¼Á +4 w320357296 2026-03-25 6/300 2026-03-25 17:59 by 255671
[¿¼ÑÐ] 0854AI CV·½ÏòÕÐÊÕµ÷¼Á +4 ÕÂСÓã567 2026-03-23 4/200 2026-03-25 17:04 by CoderLoser
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄϺ½²ÄÁÏר317·ÖÇóµ÷¼Á +5 ըѽըѽըÊíÌõ 2026-03-23 5/250 2026-03-24 16:52 by ÐÇ¿ÕÐÇÔÂ
[¿¼ÑÐ] 341Çóµ÷¼Á(Ò»Ö¾Ô¸ºþÄÏ´óѧ070300) +5 ·¬ÇÑÍ·--- 2026-03-22 6/300 2026-03-23 23:45 by Txy@872106
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û