久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3482|回復: 0
打印 上一主題 下一主題
收起左側

CImgProcessDlg更新記錄--平滑的調整圖像

[復制鏈接]
跳轉到指定樓層
樓主
ID:77367 發表于 2015-4-18 20:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
原先在調整圖像顏色的時候, 如【亮度/對比度】,無法實現實時的預覽效果,因為有嚴重的閃爍,今天這個幼稚的BUG被修正了。。Windows中的程序就是不停的畫界面, 每個地方都是一小塊小塊的畫出來的, 畫的不好就會閃爍了...

首先添加兩個指針和一個函數:

KFreeImage* m_pBitmap, *m_pHoldBitmap;                //用來動態顯示圖片
void QuickUpdateImage(UINT type, bool bRedraw = true, double param1 = 0.0f, double param2 = 0.0f);

為什么添加的是兩個指針而不是變量, 因為這里 KFreeImage 是個封裝FreeImage的圖片對象放在內存里面, 已經有一個
KFreeImage m_kOrgImage;        存放圖像了, 太多了浪費空間....變量的作用看后面的code....

下面是這個函數快速的在界面上更新圖片, 給第三方的界面調用, 可以定義個消息,發送消息, 也可以直接調用:
//////////////////////////////////////////////////////////////////////////
//快速臨時的顯示圖片效果
void CImgProcessDlg::QuickUpdateImage(UINT type,
                                                                          bool bRedraw /*= true*/,
                                                                          double param1 /*= 0.0f*/,
                                                                          double param2 /*= 0.0f*/)
{
        if (!m_pHoldBitmap)
                return;

        if (m_pBitmap)
        {
                delete m_pBitmap;
                m_pBitmap = NULL;
        }

        unsigned int W, H;
        W = m_pHoldBitmap->GetWidth();
        H = m_pHoldBitmap->GetHeight();

        m_pBitmap = new KFreeImage;
        m_pBitmap->CopyFrom(*m_pHoldBitmap,0,0,W,H);
       

        switch(type)
        {
        case IDC_BUTTON_ADJUST:
                m_pBitmap->AdjustColors(param1, param2,1.0,FALSE);
                break;
        default:
                break;
        }

        Init(*m_pBitmap);        //Init() 里面的一系列初始化, 就不多說了, 牽扯很多東西

        if(bRedraw)
        {
                RECT r = m_Rect;
                r.right = W < m_Rect.right ? W : m_Rect.right + 16;
                r.bottom = H < m_Rect.bottom ? H : m_Rect.bottom + 16;
                InvalidateRect(&r, FALSE);
        }

}



這里面以【亮度/對比度】為例, 怎么寫代碼:

//////////////////////////////////////////////////////////////////////////

void CImgProcessDlg::OnBnClickedButtonAdjust()
{
        //initialization
        if (m_pHoldBitmap)
        {
                delete m_pHoldBitmap;
                m_pHoldBitmap = NULL;
        }


        m_pHoldBitmap = new KFreeImage;


        //handle zoom first
        if(fabs(m_fZoom-1.0f) < 0.005f)
        {
                m_pHoldBitmap->CopyFrom(m_kOrgImage,0,0,
                        m_kOrgImage.GetWidth(), m_kOrgImage.GetHeight());


        }
        else
        {
                m_kOrgImage.Rescale(*m_pHoldBitmap, (int)(m_fZoom*m_kOrgImage.GetWidth()-0.05f),
                        (int)(m_fZoom*m_kOrgImage.GetHeight()-0.05f), m_eFilterMode);
        }


        CAdjustColors dlg(this);
        INT_PTR ret = dlg.DoModal();        //dlg調用QuickUpdateImage()調整圖像


        if (ret != IDOK)
        {
                UpdateImage();  //update to old image
        }
        else //IDOK
        {
                //adjust original image
                m_MenuCommand = IDC_BUTTON_ADJUST;
                para1 = dlg.m_dBrightness;
                para2 = dlg.m_dContrast;

                m_hThreadTools = CreateThread( NULL,
                        0,
                        RunImageToolsThread,
                        this,
                        0,
                        &dwThreadID );
        }


        //clean:
        if (m_pBitmap)
        {
                delete m_pBitmap;
                m_pBitmap = NULL;
        }


        if (m_pHoldBitmap)
        {
                delete m_pHoldBitmap;
                m_pHoldBitmap = NULL;
        }


}



這是調整圖像就不會閃的亂七八糟了....




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99热99 | 精品欧美一区二区在线观看视频 | 在线国产一区二区三区 | 人人干人人爽 | 在线天堂免费中文字幕视频 | 国产一二三区免费视频 | 国产亚洲精品久久久久久牛牛 | 99热这里有精品 | 酒色成人网| 日韩欧美一区二区三区四区 | 久久在线视频 | 青青久在线视频 | 综合网视频 | 国产999精品久久久久久 | 欧美精品成人一区二区三区四区 | 亚洲精品专区 | 亚洲精品视频一区 | 久久久久久成人 | 在线观看国产视频 | 久久久久精 | 91久久久久久久久久久久久 | 999久久久 | 成人在线观看网站 | 成人免费大片黄在线播放 | 午夜小视频在线播放 | 欧美一区二区三区久久精品 | 久久国产激情视频 | 日韩av网址在线观看 | 久久国内精品 | 羞羞色影院 | 婷婷色在线播放 | 天天干天天干 | 青春草91| 一区二区三区视频播放 | 欧美精品在线播放 | 一区二区三区在线看 | av一区在线观看 | 久久精品国产一区二区 | 成人网视频 | 97精品超碰一区二区三区 | 91视频免费观看 |