cximage+png圖片處理(中)

接着昨天晚上的東西做。我們做了如何添加一個背景到對話框上,再來看一下這個效果,昨天晚上因爲網不好,而已又着急。所以今天晚上來我換一張大的圖片,來看一下效果。

因爲我的這個圖片是800*600的在窗口初始化的時候,我要設置下窗口的大小。

看到效果了吧,很好是不 是,比你們用gdi+jpg,是不是容易的很呀!

現在我們來往按鈕上貼張圖,看一下效果,因爲是png圖。你需要用你的ps來處理一下你的圖片。保存成png格式的。

下來我們需要重寫一下CButton類。來跟我一步一步的做吧

好了之後,我們需要開始寫這個類,

第一步先導入cximage這個類的頭文件

include "ximage.h"

public:
   CxImage * m_setpng;

寫好之後。我們需要添加這個個函數。


下來,我們寫PreSubclassWindow

void CMybutton::PreSubclassWindow() 
{
// TODO: Add your specialized code here and/or call the base class
ModifyStyle(0,BS_OWNERDRAW|BS_PUSHBUTTON);
CButton::PreSubclassWindow();
}

這個寫好了之後。我們來寫drawitem()

void CMybutton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
// TODO: Add your code to draw the specified item
    CRect rc=lpDrawItemStruct->rcItem;
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
dc.SetBkMode(TRANSPARENT);


if(m_setpng!=NULL)
{
CDC*pRealDC=CDC::FromHandle(lpDrawItemStruct->hDC);
m_setpng->Draw(pRealDC->GetSafeHdc());
}else
{
CButton::DrawItem(lpDrawItemStruct);
}
dc.DeleteDC();
}

在寫這個OnEraseBkgnd函數。

BOOL CMybutton::OnEraseBkgnd(CDC* pDC) 
{
// TODO: Add your message handler code here and/or call default

//return CButton::OnEraseBkgnd(pDC);

       return true;
}

還得添加一個方法來。來給按鈕賦值。

void CMybutton::SetImage(CxImage *image)
{
   m_setpng=image;
}

這些都寫好之後。

在你的cxxxdlg裏找到OnInitDialog()這個函數裏寫這幾句話就行了。

BOOL CCximageDlg::OnInitDialog()
{

       m_button1=new CMybutton ();
        CxImage *pImage=new CxImage();
pImage->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_PNG4),_T("PNG")), CXIMAGE_FORMAT_PNG);
       m_button1->SetImage(pImage);
m_button1->Create("",WS_VISIBLE|WS_CHILD,CRect(43,320,153,457),this,0);

}

效果看到下圖。


好了大功告成。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章