我想把它放在一個按鈕里,但報錯了,是圖片路徑的問題嗎
本人小白一個,不是很懂CImage類,希望有大佬指點一下
代碼
void CzdljDlg::OnBnClickedButton2()
{
CImage img;
CString ipath=_T("C:\Users\MAC\Desktop\最短路徑 - 副本\zdlj\res\t1 1——2.png");
if (IsIconic())
{
CPaintDC dc(this); // 用于繪制的設備背景關系
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使圖示在作業區矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 繪制圖示
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPaintDC dc(this);
if(!img.IsNull()) img.Destroy();
img.Load(ipath); //load載入,否則不顯示
TransparentPNG(&img); //呼叫透明化處理函式
if(!img.IsNull()) img.Draw(dc.m_hDC, 15, 14);
CDialogEx::OnPaint();
}
}
void CzdljDlg::TransparentPNG(CImage *png)
{
for(int i = 0; i <png->GetWidth(); i++) //遍歷像素處理
{
for(int j = 0; j <png->GetHeight(); j++)
{
unsigned char* pucColor = reinterpret_cast<unsigned char*>(png->GetPixelAddress(i , j));
pucColor[0] = pucColor[0] *pucColor[3] / 255;
pucColor[1] = pucColor[1] *pucColor[3] / 255;
pucColor[2] = pucColor[2] *pucColor[3] / 255;
}
}
}

uj5u.com熱心網友回復:
單個的'\'是轉義符 , 路徑時用'\\'CString ipath=_T("C:\\Users\\MAC\\Desktop\\最短路徑 - 副本\\zdlj\\res\\t1 1——2.png");
uj5u.com熱心網友回復:
編譯·都·通不過warning C4129: 'U' : unrecognized character escape sequence
warning C4129: 'M' : unrecognized character escape sequence
warning C4129: 'D' : unrecognized character escape sequence
uj5u.com熱心網友回復:
還是報錯呀??,我把它放到onpaint函式里也不行
uj5u.com熱心網友回復:
我用的是vs2010,編譯是通過了的
uj5u.com熱心網友回復:
m_hBitmap == 0 就表示圖片沒有加載成功if(!img.IsNull())
{
TransparentPNG(&img);
img.Draw(dc.m_hDC, 15, 14);
}
uj5u.com熱心網友回復:
沒有報錯了,可是也沒有反應了??uj5u.com熱心網友回復:
那個m_hBitmap要在頭檔案里定義嗎,不然顯示它為未定義識別符號
uj5u.com熱心網友回復:
m_hBitmap == 0 這一句只是分析報錯的原因,不需要出現在代碼中uj5u.com熱心網友回復:
m_hBitmap != 0 ; 看起來是之前已經關聯了,現在又關聯?uj5u.com熱心網友回復:
你的路徑 太復雜 ?uj5u.com熱心網友回復:
把這句代碼刪了:CDialogEx::OnPaint();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/45323.html
標籤:基礎類
上一篇:未定義識別符號
