onpaint()函式中的代碼
int cx,cy;
CImage image;//定義圖片物件
CRect rect;
image.Load(_T("E:\\Picture\\psb.jpg"));//裝載圖片
cx=image.GetWidth();//獲取圖片的寬度
cy=image.GetHeight();//獲取圖片的高度
GetDlgItem(IDC_STATIC)->GetWindowRect(&rect);//獲取picture控制元件的大小
ScreenToClient(&rect);//將客戶去選中到控制元件表示的矩形區域內
GetDlgItem(IDC_STATIC)->MoveWindow(&rect);//視窗移動到控制元件表示的區域
CWnd *pwnd=NULL;
pwnd=GetDlgItem(IDC_STATIC);//獲取視窗的句柄
pwnd->GetClientRect(&rect);
CDC *pDc = NULL;
pDc = pwnd->GetDC();//獲取picture的DC
image.Draw(pDc->m_hDC, rect);//將圖片繪制到picture表示的區域內
ReleaseDC(pDc);
onsize()函式中代碼
void CPictureDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
static int counter=0;
if (counter>0)
{
int ca,cb;
CImage image;//定義圖片物件
CRect rect;
image.Load(_T("E:\\Picture\\psb.jpg"));//裝載圖片
ca=image.GetWidth();//獲取圖片的寬度
cb=image.GetHeight();//獲取圖片的高度
GetDlgItem(IDC_STATIC)->GetWindowRect(&rect);//獲取picture控制元件的大小
rect.bottom=cy;
rect.right=cx;
ScreenToClient(&rect);//將客戶區選中到控制元件表示的矩形區域內
GetDlgItem(IDC_STATIC)->MoveWindow(&rect);//視窗移動到控制元件表示的區域
CWnd *pwnd=NULL;
pwnd=GetDlgItem(IDC_STATIC);//獲取視窗的句柄
pwnd->GetClientRect(&rect);
CDC *pDc = NULL;
pDc = pwnd->GetDC();//獲取picture的DC
image.Draw(pDc->m_hDC, rect);//將圖片繪制到picture表示的區域內
ReleaseDC(pDc);
}
counter++;
}
初次運行時圖片

點擊最大化按鈕后的圖片

再次點擊最大化按鈕,這是對話框顯示為初次運行時的大小,但是圖片顯示不正確了

uj5u.com熱心網友回復:
一般繪制在 WM_SIZE 訊息處理中不要進行繪圖操作,Invalidate 觸發繪制訊息即可uj5u.com熱心網友回復:
試過了,沒用uj5u.com熱心網友回復:
image.Draw(pDc->m_hDC, rect); 之前,呼叫 SetStretchBltMode(COLORONCOLOR)轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/93912.html
標籤:界面
上一篇:如何使用char型字串陣列??
