VC中影象控制項的用法與總結

2021-08-13 17:22:17 字數 2774 閱讀 2339

使用picture控制項動態顯示**方法

一控制項適應於**尺寸

新增乙個picture控制項,修改id為idc-picture,並新增一cbitmap m_bmp成員變數

在oninitdialog()函式中新增如下**

if(m_bmp.m_hobject!=null) m_

//以絕對路徑載入bmp**

hbitmap hbmp=(hbitmap)::loadimage(afxgetinstancehandle(),"1.bmp",image_bitmap,

0,0,lr_createdibsection | lr_loadfromfile);

if(hbmp==null) return false;

//獲得載入點陣圖的檔案資訊

m_bmp.attach(hbmp);

dibsection ds;

bitmapinfoheader &bminfo=ds.dsbmih;//獲得位圖資訊圖

m_bmp.getobject(sizeof(ds),&ds);

int cx=bminfo.biwidth;//獲得位圖寬度

int cy=bminfo.biheight;//獲得位圖高度

//該段程式根據圖象的寬和高,調整控制項大小,讓它正好顯示一張**

crect rect;

getdlgitem(idc_pictrue)->getwindowrect(&rect);//獲得控制項所在矩形區域

screentoclient(&rect);

getdlgitem(idc_pictrue)->movewindow(rect.left,調整控制項大小

在onpaint()函式中新增如下**

//三種方法獲得pictrue控制項dc,圖象將被繪製在控制項上

cpaintdc dc(getdlgitem(idc_pictrue));

//cpaintdc dc(this);

//cdc dc;

//dc.m_hdc=::getdc(null);

crect rcclient;

getdlgitem(idc_pictrue)->getclientrect(&rcclient);

cdc memdc;

memdc.createcompatibledc(&dc);

cbitmap bitmap;

bitmap.createcompatiblebitmap(&dc,rcclient.width(),rcclient.height());

memdc.selectobject(&bitmap);

cwnd::defwindowproc(wm_paint,(wparam)memdc.m_hdc,0);

cdc maskdc;

maskdc.createcompatibledc(&dc);

cbitmap maskbitmap;

maskbitmap.createbitmap(rcclient.width(),rcclient.height(),1,1,null);

maskdc.selectobject(&maskbitmap);

maskdc.bitblt(0,0,rcclient.width(),rcclient.height(),&memdc,rcclient.left,

cbrush brush;

brush.createpatternbrush(&m_bmp);

dc.fillrect(rcclient,&brush);

dc.bitblt(rcclient.left,

rcclient.left,

二**適用於控制項尺寸

新增乙個picture控制項,修改id為idc-picture

在onpaint()函式中新增如下**

cwnd *pwnd=getdlgitem(idc_pictrue);//獲得pictrue控制項視窗的控制代碼

crect rect;

pwnd->getclientrect(&rect);//獲得pictrue控制項所在的舉行區域

cdc *pdc=pwnd->getdc();//獲得pictrue控制項的dc

istream *pstm;

cfilestatus fstatus;

cfile file;

long cb;

ipicture *ppic;//定義顯示**的介面(可顯示jpg格式**)

cstring m_spath="1.bmp";//設定想要顯示的**

//開啟圖象檔案,獲取檔案位元組數

if(file.open(m_spath,cfile::moderead) && file.getstatus(m_spath,fstatus)

cb=fstatus.m_size)!=-1))

}}//裝載圖象檔案

if(succeeded(oleloadpicture(pstm,fstatus.m_size,true,iid_ipicture,(lpvoid*)&ppic)))

**顯示通用模組

首先為類新增如下兩個函式和乙個成員變數ipicture* m_ppicture;

//**載入函式

hresult loadfrombuffer(byte *pbuff, int nsize)

return bresult;

}//**顯示函式

bool drawfromfile(cstring filename, cdc *pdc)

return true;

}然後在onpaint()函式中顯示

void cdialogdlg::onpaint()

C和C 中const的用法異同總結

c中const的用法總結起來主要分為以下兩種 1 在定義變數時使用 由於const常量在定義後不能被修改,所以在定義時一定要進行初始化操作 a 最簡單的用法,說明變數為乙個常變數 在以下例子裡,int 和const的先後順序可以改變的,這無所謂 const int a 100 int const b...

《逍遙遊》中「之」「而」「以」的用法總結

翻譯下列句子 1是鳥業,海運則將徙於南冥,南冥者,天池也。2天之蒼蒼,其正色耶,其遠而無所至其極也。3且夫水之積也不厚,則其負大舟也無力。4奚以之九萬里而南為?5故夫知效一官,行比一鄉,德合一君,而徵一國者6故曰 至人無己,神人無功,聖人無名。之 1鯤之 取獨 大 2鵬之 的 背 3其翼若垂天之 的...

影象處理中的梯度 梯度方向總結

一 數學中的方向導數與梯度 方向導數為函式沿某一指定方向的變化率。方向導數的定義為 若此時的極限存在。其中為與l同方向的單位向量,該方向導數就是處沿方向l的變化率。進而有,其中為方向l的方向餘玄。向量稱為函式在點的梯度,記為。若函式在點可微分,與方向l同向的單位向量,則 其中,此式表明方向導數與梯度...