mfc继续画图孙鑫c第十讲笔记整理Word文档下载推荐.docx
- 文档编号:18981997
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:22
- 大小:19.54KB
mfc继续画图孙鑫c第十讲笔记整理Word文档下载推荐.docx
《mfc继续画图孙鑫c第十讲笔记整理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《mfc继续画图孙鑫c第十讲笔记整理Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
5.为设置对话框增加示例功能。
a.当控件内容改变时,发出En_change消息。
而Radio按纽则为Clicked。
需先UpdateData()。
另外还需要ScreenToClient(&
amp;
rect)
6.改变对话框的背景色和控件颜色。
每个控件被绘制时都发出WM_CTlColor消息,
7.如何改变OK按纽的字体和背景?
OK按纽
a.创建一个新类,CTestBtn,基类为CButton
b.在类中增加虚函数,DrawItem,添加代码。
c.将OK按纽关联成员变量。
类型为CTestBtn,注意将OK按纽的OwnerDraw特性选中。
Cancel按纽
用新类来改变。
a.加入新文件。
b.为Cancel关联一个成员变量,类型为CSXBtn;
c.调用CSXBtn的方法。
Cancel2按纽
a.方法同上。
8.在窗口中贴图,4个步骤
1、创建位图
CBitmap
bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
2、创建兼容DC
CDC
dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
3、将位图选到兼容DC中
dcCompatible.SelectObject(&
bitmap);
4、将兼容DC中的位图贴到当前DC中。
在WM_EraseBkgnd()中调用,但不能再调用基类的擦除背景函数。
也可以在OnDraw函数中完成,但效率低,图像会闪烁,因为它先擦除背景,慢。
pDC-&
gt;
BitBlt(rect.left,rect.top,rect.Width(),
rect.Height(),&
dcCompatible,0,0,SRCCOPY);
具体细节:
[cpp]view
plaincopyprint?
voidCHuiTuView:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
m_yuandian=point;
CView:
OnLButtonDown(nFlags,point);
}voidCHuiTuView:
{
}
OnLButtonUp(UINTnFlags,CPointpoint)
CClientDCcdcc(this);
HBRUSHhbrush=(HBRUSH)GetStockObject(NULL_BRUSH);
CBrush*oldbrush=cdcc.SelectObject(CBrush:
FromHandle(hbrush));
CPencpen(m_xianleixing,m_xiandaxiao,RGB(255,0,0));
CPen*oldpen=cdcc.SelectObject(&
cpen);
switch(m_huastyle)
{
case0:
cdcc.SetPixel(point,RGB(255,0,0));
break;
case1:
cdcc.MoveTo(m_yuandian);
cdcc.LineTo(point);
case2:
cdcc.Rectangle(&
CRect(m_yuandian,point));
case3:
cdcc.Ellipse(&
default:
}
cdcc.SelectObject(oldbrush);
cdcc.SelectObject(oldpen);
OnLButtonUp(nFlags,point);
switch(m_huastyle)
{
cdcc.SetPixel(point,RGB(255,0,0));
break;
cdcc.MoveTo(m_yuandian);
cdcc.LineTo(point);
cdcc.Rectangle(&
cdcc.Ellipse(&
}
OnSetting()
Addyourcommandhandlercodehere
CHuituDlgcdlg;
cdlg.m_xiankuai=m_xiandaxiao;
cdlg.m_leixing=m_xianleixing;
if(IDOK==cdlg.DoModal())
UpdateData();
m_xiandaxiao=cdlg.m_xiankuai;
m_xianleixing=cdlg.m_leixing;
if(IDOK==cdlg.DoModal())
UpdateData();
m_xiandaxiao=cdlg.m_xiankuai;
m_xianleixing=cdlg.m_leixing;
}}
OnDian()
m_huastyle=0;
}
OnLine()
m_huastyle=1;
OnJuxing()
m_huastyle=2;
OnYuan()
m_huastyle=3;
}voidCHuiTuView:
edit挂链一个UINT整形,类型radio关联一个int
调用系统的调色板
1菜单添加一个“颜色”选项
ID_COLOR
2为这个COLOR添加事件
OnColor()
CColorDialogccdlg;
ccdlg.m_cc.Flags|=CC_FULLOPEN|CC_RGBINIT;
ccdlg.m_cc.rgbResult=m_yanse;
if(IDOK==ccdlg.DoModal())
m_yanse=ccdlg.m_cc.rgbResult;
AddyourcommandhandlercodehereCColorDialogccdlg;
if(IDOK==ccdlg.DoModal())
m_yanse=ccdlg.m_cc.rgbResult;
3在CXXView中定义成员变量m_yanse,然后画图的时候,用这个去创建就行了
创建字体对话框也是一样的步骤
OnZiti()
CFontDialogcfdlg;
if(IDOK==cfdlg.DoModal())
if(m_ziti.m_hObject)
m_ziti.DeleteObject();
m_ziti.CreateFontIndirect(cfdlg.m_cf.lpLogFont);
m_zitimingzi=cfdlg.m_cf.lpLogFont-&
lfFaceName;
Invalidate();
if(IDOK==cfdlg.DoModal())
if(m_ziti.m_hObject)
{
m_ziti.DeleteObject();
}
m_ziti.CreateFontIndirect(cfdlg.m_cf.lpLogFont);
m_zitimingzi=cfdlg.m_cf.lpLogFont-&
一个选择线条的示例
voidCHuituDlg:
OnChangeXiankuan()
IfthisisaRICHEDITcontrol,thecontrolwillnot
//sendthisnotificationunlessyouoverridetheCDialog:
OnInitDialog()
//functionandcallCRichEditCtrl().SetEventMask()
//withtheENM_CHANGEflagORedintothemask.
Addyourcontrolnotificationhandlercodehere
OnRadio1()
OnRadio2()
OnRadio3()
OnPaint()
CPaintDCdc(this);
//devicecontextforpainting
Addyourmessagehandlercodehere
CClientDCccdc(this);
CPencpen(m_leixing,m_xiankuai,RGB(255,0,0));
//可以设置一个成员变量接收来自调色板的颜色
ccdc.SelectObject(&
CRectcrect;
GetDlgItem(ID_SHILI)-&
GetWindowRect(&
crect);
ScreenToClient(&
TEXTMETRICtm;
ccdc.GetTextMetrics(&
tm);
ccdc.MoveTo(crect.left+20,crect.top+crect.Height()/2);
ccdc.LineTo(crect.right-20,crect.top+crect.Height()/2);
//DonotcallCDialog:
OnPaint()forpaintingmessages
}voidCHuituDlg:
AddyourcontrolnotificationhandlercodehereInvalidate();
}voidCHuituDlg:
//devicecontextforpainting
//可以设置一个成员变量接收来自调色板的颜色
当进行数据交互是要UpdateData
能够立即交互
在对话框中添加WM_CTLCOLOR消息
HBRUSHCHuituDlg:
OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)
HBRUSHhbr=CDialog:
OnCtlColor(pDC,pWnd,nCtlColor);
ChangeanyattributesoftheDChere
Returnadifferentbrushifthedefaultisnotdesired
returnm_myBrush;
//returnhbr;
}HBRUSHCHuituDlg:
Returnadifferentbrushifthedefaultisnotdesiredreturnm_myBrush;
m_mBrush.CreateSolidBrush(RGB(0,255,0))
返回自己的画刷,对话框中的控件绘制的时候
就会触发这个消息
Returnadifferentbrushi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mfc 继续 画图 第十 笔记 整理
![提示](https://static.bdocx.com/images/bang_tan.gif)