• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    MFC基礎--怎樣貼一張圓型的位圖

    發布: 2007-7-14 21:11 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 24次 | 進入軟件測試論壇討論

    領測軟件測試網 如果你要做有關棋類的東東
    又恰好有兩張漂亮棋子的位圖,
    可惜兩張位圖是方型的,后面
    有背景..在Delphi里只要將
    背景色設成透明就行了,可在
    MFC里怎樣實現把背景去掉只
    顯示圓形的棋子呢?

    實例如下:
    //To invoke this function with the position

    BOOL IsBlack = TRUE;//set the black stone defautly
    CBitMap m_bStoneB;
    CBitMap m_bStoneW;
    //load bmp from resource
    m_bStoneB.LoadBitmap(IDB_BLACKSTONE);
    m_bStoneW.LoadBitmap(IDB_WHITESTONE);

    void CxxDlg::OnPutStone(CPoint point)
    {
    CDC *pDC = GetDC(); //Get Device Context
    CBitmap *pOldBitmap;
    CBrush *pOldBrush;
    CPen *pOldPen;

    if(pDC == NULL)
    return;

    CDC dcimage;
    if (!dcimage.CreateCompatibleDC(pDC)) //Create MemDC
    return;

    CRect rect; //Get the rectangle of stone;
    rect.left = point.x - 25/3;
    rect.right = point.x + 25/3;
    rect.top = point.y - 25/3;
    rect.bottom = point.y + 25/3;

    if(IsBlack) //judge whether stone is black
    {
    //Select blackstone in memory and select out oldbitmap
    pOldBitmap = dcimage.SelectObject(&m_bStoneB);
    CBrush br(RGB(0, 0, 0)); //set brush to black
    CPen pen(PS_SOLID,1,RGB(0, 0, 0));//set pen to black
    pOldPen=pDC->SelectObject(&pen);//select in pen(black)
    //and out oldpen

    pOldBrush = pDC->SelectObject(&br);//select in brush(black)
    pDC->Ellipse(&rect);//draw a ellipse in defined rectangle
    BITMAP bm;
    m_bStoneB.GetBitmap(&bm);//Get blackstone bitmap info

    //paint memory bitmap(blackstone) with the operator OR
    pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),
    &dcimage,0,0,bm.
    mWidth,bm.bmHeight,SRCPAINT);
    }
    else //the same to draw whitestone bitmap
    {
    //select in whitestone and select out blackstone
    pOldBitmap = dcimage.SelectObject(&m_bStoneW);
    CBrush br(RGB(255, 255, 255)); //set white brush
    CPen pen(PS_SOLID,1,RGB(255, 255, 255));//set white pen
    pOldPen=pDC->SelectObject(&pen);
    pOldBrush = pDC->SelectObject(&br);
    pDC->Ellipse(&rect);
    BITMAP bm;
    m_bStoneW.GetBitmap(&bm);
    //paint memory bitmap(whitestone) with the operator AND
    pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),

    &dcimage,0,0,bm.
    mWidth,bm.bmHeight,SRCAND);
    }

    dcimage.SelectObject(pOldBitmap); //select old bitmap
    pDC->SelectObject(pOldPen);//select old pen
    pDC->SelectObject(pOldBrush);//select old brush

    IsBlack = !IsBlack; //switch to white or black
    ReleaseDC(pDC);//relieve GDI resource(important)
    }

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>