📄 subject_40459.htm
字号:
<p>
序号:40459 发表者:hiha 发表日期:2003-05-19 01:24:57
<br>主题:为什么我的这个图画不出来?
<br>内容:void CPictureDlg::OnPaint() <BR>{<BR> if (IsIconic())<BR> {<BR> CPaintDC dc(this); // device context for painting<BR><BR> SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);<BR><BR> // Center icon in client rectangle<BR> int cxIcon = GetSystemMetrics(SM_CXICON);<BR> int cyIcon = GetSystemMetrics(SM_CYICON);<BR> CRect rect;<BR> GetClientRect(&rect);<BR> int x = (rect.Width() - cxIcon + 1) / 2;<BR> int y = (rect.Height() - cyIcon + 1) / 2;<BR><BR> // Draw the icon<BR> dc.DrawIcon(x, y, m_hIcon); }<BR> else<BR> {<BR> CDialog::OnPaint();<BR> }<BR> if (m_bDraw)<BR> {<BR> CRect rect;<BR> CPen *oldPen;<BR> CPen solidPen(PS_SOLID,0,RGB(255,0,0));<BR> CBitmap memBitmap;<BR> CBitmap *oldBitmap;<BR> int CurX;<BR> int CurY;<BR> GetDlgItem(IDC_PIC)->GetWindowRect(rect);//是一个pic控件<BR> ScreenToClient(rect);<BR><BR> CPaintDC dc(this);<BR> CDC memDC;<BR> memDC.CreateCompatibleDC(NULL);<BR> memBitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());<BR> oldBitmap=(CBitmap *)memDC.SelectObject(&memBitmap);<BR> memDC.FillSolidRect(0,0,rect.Width (),rect.Height (),RGB(255,255,255));<BR> oldPen=memDC.SelectObject (&solidPen);<BR><BR> CurX=0;<BR> CurY=CurX+200;//y=x+200<BR> memDC.MoveTo(CurX,CurY);<BR> for (int i=0;i<1000;i++)<BR> { <BR> CurX+=1;<BR> CurY=CurX+2;<BR> memDC.LineTo(CurX,CurY);<BR> }<BR> if (memDC.GetSafeHdc()!=NULL)<BR> {<BR> dc.BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);<BR> }<BR> memDC.SelectObject(oldBitmap);<BR> memBitmap.DeleteObject (); <BR> memDC.SelectObject (oldPen);<BR> memDC.DeleteDC ();<BR> }<BR>}<BR><BR>void CPictureDlg::OnStart() <BR>{<BR> // TODO: Add your control notification handler code here<BR> m_bDraw=TRUE;<BR> Invalidate();<BR>}<BR>我的目的是要在一个picture控件(frame)中绘制图形,可看不到图形,怎么回事?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:擎天柱 回复日期:2003-05-19 07:46:41
<br>内容:void CPictureDlg::OnPaint() <BR>{<BR> if (IsIconic())<BR> {<BR> CPaintDC dc(this); // device context for painting<BR><BR> SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);<BR><BR> // Center icon in client rectangle<BR> int cxIcon = GetSystemMetrics(SM_CXICON);<BR> int cyIcon = GetSystemMetrics(SM_CYICON);<BR> CRect rect;<BR> GetClientRect(&rect);<BR> int x = (rect.Width() - cxIcon + 1) / 2;<BR> int y = (rect.Height() - cyIcon + 1) / 2;<BR><BR> // Draw the icon<BR> dc.DrawIcon(x, y, m_hIcon); }<BR> else<BR> {<BR> // CDialog::OnPaint();<BR> if (m_bDraw)<BR> {<BR> CRect rect;<BR> CPen *oldPen;<BR> CPen solidPen(PS_SOLID,0,RGB(255,0,0));<BR> CBitmap memBitmap;<BR> CBitmap *oldBitmap;<BR> int CurX;<BR> int CurY;<BR> GetDlgItem(IDC_PIC)->GetWindowRect(rect);//是一个pic控件<BR> ScreenToClient(rect);<BR><BR> CPaintDC dc(this);<BR> CDC memDC;<BR> memDC.CreateCompatibleDC(NULL);<BR> memBitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());<BR> oldBitmap=(CBitmap *)memDC.SelectObject(&memBitmap);<BR> memDC.FillSolidRect(0,0,rect.Width (),rect.Height (),RGB(255,255,255));<BR> oldPen=memDC.SelectObject (&solidPen);<BR><BR> CurX=0;<BR> CurY=CurX+200;//y=x+200<BR> memDC.MoveTo(CurX,CurY);<BR> for (int i=0;i<1000;i++)<BR> { <BR> CurX+=1;<BR> CurY=CurX+2;<BR> memDC.LineTo(CurX,CurY);<BR> }<BR> if (memDC.GetSafeHdc()!=NULL)<BR> {<BR> dc.BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);<BR> }<BR> memDC.SelectObject(oldBitmap);<BR> memBitmap.DeleteObject (); <BR> memDC.SelectObject (oldPen);<BR> memDC.DeleteDC ();<BR> }<BR> }<BR> }
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -