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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3504|回復: 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;
        }


}



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




回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九精品在线 | 久久久999免费视频 999久久久久久久久6666 | 91色综合 | 亚洲一区二区久久 | 天天干夜夜拍 | 亚洲免费视频播放 | 香蕉久久网 | 久久久久久久电影 | 久久性色 | 国产做爰 | 91精品国产乱码麻豆白嫩 | 九九热久久免费视频 | 在线精品一区二区 | 国产精久久久久久 | 精品国产31久久久久久 | 欧美日本韩国一区二区三区 | 色毛片| 精品av| 欧美日韩综合一区 | 美女天堂 | 国产99久久精品一区二区永久免费 | 蜜桃av鲁一鲁一鲁一鲁 | 91精品国产91久久久久青草 | 中文字幕成人av | 天天夜碰日日摸日日澡 | 欧洲成人午夜免费大片 | 女人毛片a毛片久久人人 | 国产黄色大片 | 91电影| 中文字幕精品一区久久久久 | 亚洲精品无人区 | 日韩伦理电影免费在线观看 | 亚洲麻豆 | 日日夜夜天天 | 欧美日韩亚洲视频 | 亚洲一一在线 | 欧美日韩三区 | 毛片免费在线观看 | 日韩成人av在线 | 精品久久久久久久久久久久久久 | 成人免费观看视频 |