此乃作者笔记,仅此而已。
画图操作: void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); switch (m_nDrawType) { case 1: dc.SetPixel(point, RGB(255, 0, 0)); break; case 2: dc.MoveTo( m_prOrigin); dc.LineTo(point); break; case 3: dc.Rectangle( CRect( m_prOrigin, point) ); break; case 4: dc.Ellipse(CRect( m_prOrigin, point)); break; default: break; } CView::OnLButtonUp(nFlags, point); } //对于CClientDC的成员函数Rectangle和Ellipse,其函数参数是一个指向CRect对象的指针,而这里传 递的却是CRect对象,主要是因为CRect类型提供了这样一个成员函数:重载LPCRECT操作符,其作用是将 CRect转换为LPCRECT类型。 再次声明,添加画笔(即修改笔的颜色): CPen pen (PS_SOLID, 1, RGB(255, 0, 0)); dc.SelectObject( &pen); 修改画刷颜色,可以指定为透明: CBrush *pBrush = CBrush::FromHandle( (HBRUSH)GetStockObject(NULL_BRUSH)); dc.SelectObject( pBrush); 修改字体: CFont *pOldFont = pDC ->SelectObject( &m_font); pDC->TextOut( 0, 0, m_strFontName); pDC->SelectObject( pOldFont); 添加设置Pen的宽度的对话框: ①先构造对话框,再生成一个类 ②在对话框中生成一个于控件关联的成员变量,用以保存笔宽。在视类中声明一个成员变量,用以保存 对话框传来的笔宽 ③在menu中添加相应的设置菜单,并且添加响应函数 ④在响应函数中调用设置对话框,并且将对话框中的笔宽取过来,保存在视类的成员变量中 注意:为了让设置对话框打开时显示的是上一次出现的笔宽,还需要在响应函数中,调用DoModal之前, 将上次的笔宽再保存回去 颜色对话框:CColorDialog类 void CGraphicView::OnColor() { // TODO: Add your command handler code here CColorDialog dlg; dlg.m_cc.Flags |= CC_RGBINIT; dlg.m_cc.rgbResult = m_clr; if( IDOK == dlg.DoModal()) { m_clr = dlg.m_cc.rgbResult; } } 字体选择对话框:CFontDialog void CGraphicView::OnFont() { // TODO: Add your command handler code here CFontDialog dlg; if( IDOK == dlg.DoModal()) { if( m_font.m_hObject) m_font.DeleteObject(); m_font.CreateFontIndirect( dlg.m_cf.lpLogFont); m_strFontName = dlg.m_cf.lpLogFont->lfFaceName; } Invalidate(); } 对话框中添加示例: void CSettingDlg::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here // Do not call CDialog::OnPaint() for painting messages UpdateData(); CPen pen( m_nLineStyle , m_nLineWidth, RGB( 255, 0, 0)); dc.SelectObject( &pen); CRect rect; GetDlgItem(IDC_SAMPLE)->GetWindowRect( &rect); ScreenToClient( rect); dc.MoveTo( rect.left + 20, rect.top + rect.Height() /2); dc.LineTo(rect.right - 20, rect.top + rect.Height()/2); } 改变对话框控件的背景及文本颜色: 为了修改对话框颜色,需要捕获WM_CTLCOLOR消息,在响应函数中修改颜色 //字体和Brush在构造函数中已经创建完成。 //m_brush.CreateSolidBrush( RGB(0, 0, 255)); //m_font.CreatePointFont( 200,_T( "华文行楷")); HBRUSH CSettingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here // TODO: Return a different brush if the default is not desired if( pWnd->GetDlgCtrlID() == IDC_LINE_STYLE || pWnd->GetDlgCtrlID() == IDC_LINE_WIDTH) { pDC->SetTextColor( RGB(255, 0, 0)); pDC->SetBkMode(TRANSPARENT); return m_brush; } if( pWnd ->GetDlgCtrlID() == IDC_TEXT) { pDC->SelectObject( &m_font); pDC->SetTextColor( RGB( 0, 255, 0)); } return hbr; } 如果要改变按钮控件的背景和文字颜色,需要使用CButton类的一个成员函数:DrawItem 显示位图: ①创建位图,加载位图CBitmap ②创建兼容的DC ③将位图选入兼容DC中 ④将兼容DC中的位图贴到当前DC中BitBlt BOOL CStyleView::OnEraseBkgnd(CDC* pDC) { CBitmap bitmap; bitmap.LoadBitmap( IDB_TEST); CDC dcCompatible; dcCompatible.CreateCompatibleDC( pDC); dcCompatible.SelectObject( &bitmap); CRect rect; GetClientRect( &rect); pDC->BitBlt( 0, 0, rect.Width(), rect.Height(), &dcCompatible, 0, 0, SRCCOPY); // TODO: Add your message handler code here and/or call default return TRUE; } BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop); 与BitBlt函数不同的是,StretchBIt函数可以实现位图的拉伸或压缩,以适合目的矩形区域的尺寸
您还没有登录,请您登录后再发表评论
上传限制无奈分卷压缩 一共12卷 要12卷在同目录才可以解压 给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档
VC++深入详解,学习VC++的经典教材
孙鑫 VC++ 深入详解书中源码
VC++深入详解 书上的源码(全) VC++深入详解 书上的源码(全) VC++深入详解 书上的源码(全)
VC++深入详解完整版,并带完整详细的书签,包括每章,每节的书签索引。
《VC++深入详解》主要从程序内部运行的机制和MFC程序的组织脉络入手,使读者在学习VC++编程知识时,既能够知其然,又能知其所以然,从而帮助读者从根本上理解和掌握Windows的程序设计。另外,《VC++深入详解》还贯穿...
上传限制无奈分卷压缩一共12卷 要12卷在同目录才可以解压给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档
VC++深入详解
上传限制无奈分卷压缩一共12卷 要12卷在同目录才可以解压给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档 资源绝对好 大家放心
上传限制无奈分卷压缩一共12卷 要12卷在同目录才可以解压给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档资源绝对好 大家放心 解压事项:12卷放同目录下解压第一卷即可
VC++深入详解学习笔记(非常全面)
VC++深入详解 这是关于c/c++八成的想出名想开了车门学科形成可形成明显称得上得到
VC++深入详解 课程代码。包含所有章节代码,共20章。
VC++深入详解代码3-4章,很全的东西
相关推荐
上传限制无奈分卷压缩 一共12卷 要12卷在同目录才可以解压 给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档
VC++深入详解,学习VC++的经典教材
孙鑫 VC++ 深入详解书中源码
VC++深入详解 书上的源码(全) VC++深入详解 书上的源码(全) VC++深入详解 书上的源码(全)
VC++深入详解完整版,并带完整详细的书签,包括每章,每节的书签索引。
《VC++深入详解》主要从程序内部运行的机制和MFC程序的组织脉络入手,使读者在学习VC++编程知识时,既能够知其然,又能知其所以然,从而帮助读者从根本上理解和掌握Windows的程序设计。另外,《VC++深入详解》还贯穿...
《VC++深入详解》主要从程序内部运行的机制和MFC程序的组织脉络入手,使读者在学习VC++编程知识时,既能够知其然,又能知其所以然,从而帮助读者从根本上理解和掌握Windows的程序设计。另外,《VC++深入详解》还贯穿...
上传限制无奈分卷压缩 一共12卷 要12卷在同目录才可以解压 给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档
上传限制无奈分卷压缩一共12卷 要12卷在同目录才可以解压给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档
VC++深入详解
上传限制无奈分卷压缩一共12卷 要12卷在同目录才可以解压给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档 资源绝对好 大家放心
上传限制无奈分卷压缩一共12卷 要12卷在同目录才可以解压给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档
上传限制无奈分卷压缩一共12卷 要12卷在同目录才可以解压给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档资源绝对好 大家放心 解压事项:12卷放同目录下解压第一卷即可
上传限制无奈分卷压缩一共12卷 要12卷在同目录才可以解压给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档
VC++深入详解学习笔记(非常全面)
VC++深入详解 这是关于c/c++八成的想出名想开了车门学科形成可形成明显称得上得到
VC++深入详解 课程代码。包含所有章节代码,共20章。
上传限制无奈分卷压缩一共12卷 要12卷在同目录才可以解压给大家带来不便请你们谅解 VC++深入详解pdf版 VC++深入详解 VC++深入详解电子档
VC++深入详解代码3-4章,很全的东西