版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、南京工程学院多媒体编程基础课程综合作业说明书题目多媒体处理综合应用设计班级学生姓名刘土豪学号 2021003 20一三年 06 月 07 日程序功能与设计思路设计目标与具有的功能:必须含有文字处理、绘图、图像、音频视频四部分内容各3种以上功能,界面及应用方法自己根据软件的特色综合考虑,每位同学必须自己设计一个动画标志,放在【帮助】对话框中,或者窗口界面上设计思路:图形处理:可以选择直线,矩形,椭圆,涂鸦进行绘画可以选择线的形状:实线,虚线,点线可以改变线条的颜色可以改变线条的宽度可以进行多边形填充颜色并可以改变颜色图片处理:可以打开BMP格式的图片可以进行锐化,浮雕,反色等图片处理效果可以显示
2、鼠标在图片上坐标处的颜色值和颜色文字处理:实现至少少三种文字特效,比如:文字渐变,旋转体,3D,文字倾斜,下划线,空心字等音乐播放器:可以打开mp3,wma,wvi格式的歌曲可以控制音乐的播放、暂停、停止可以指定播放当前音乐的上一个或下一个音乐在列表中随意选择要播放的音乐在播放时,可以获取并显示当前播放音乐的信息可以调节音乐的音量5)视频播放器:可以打开MP3,WMA,WMV,AVI,RM,RMVB,FLV,MP4等格式在列表中随意选择要播放的媒体文件控制媒体文件的播放、暂停、停止、快进、快退指定播放当前文件的上一个或下一个媒体文件在播放时,可以获取并显示当前播放媒体的文件信息播放模式可以进行
3、进行选择可以对播放列表或列表中的选项进行删除操作相关原理知识介绍图形处理:画笔和画刷是绘图中最基本的元素1.画笔(Pen):用于在设备环境中绘制直线,曲线和多边形边框。创建画笔:CPen();CPen(int nPenStyle, int nWidth, COLORREF crColor);nPenStyle:画笔的样式PS_SOLID 创建一个实线画笔,PS_DASH 创建一个虚线画笔,PS_DOT 创建一个点线画笔nWidth:画笔的宽度crColor:画笔的颜色(颜色用RGB值来描述) 2.画刷(CBrush):常用于填充个区域诸如多边形,椭圆和路径等图形内部区域创建画刷:CreateS
4、olidBrush 用指定的颜色初始化画刷CreateHatchBrush 用指定的阴影线初始化画刷。CreateBrushIndirect用结构LOGBRUSH中指定的风格、颜色和模式初始化画刷。3.画直线:LineTo(int x,int y)画椭圆:Ellipse(int x1,int y1, int x2,int y2)画矩形:Rectangle(int x1,int y1,int x2,int y2)/x1,y1为边界矩形左上角的坐标,x2,y2为边界矩形右下角的坐标图片处理:BitBlt,用于从源设备中复制位图到目标设备中,BOOL BitBlt(HDC hdcDest,int n
5、XDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop)hdcDest:指向目标设备环境的句柄。nXDest:指定目标矩形区域左上角的X轴逻辑坐标。nYDest:指定目标矩形区域左上角的Y轴逻辑坐标。nWidth:指定源和目标矩形区域的逻辑宽度。nHeight:指定源和目标矩形区域的逻辑高度。hdcSrc:指向源设备环境的句柄。nXSrc:指定源矩形区域左上角的X轴逻辑坐标。nYSrc:指定源矩形区域左上角的Y轴逻辑坐标。dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据
6、,如何与目标矩形区域的颜色数据组合以完成最后的颜色。文字处理:输出文字Textout():用当前字体在指定位置处写一个字符串TextOut(int x,int y,Cstring string):文本起点的x坐标和y坐标以及要绘制的字符串创建字体LOGFONT 结构音频播放器:使用VC+6.0强大的MFC、AppWizard、ClassWizard和其中的多种控件可以很方便地建立各种应用程序。同时想要实现更高级更复杂的功能,也可以借助ActiveX控件资源,用这些现有的控件资源,可以省去自己编程的复杂过程,从而实现更高级的功能。本次课程设计要使用VC+6.0自带的一个ActiveX控件Wind
7、owsMediaPlayer控件,建立自己的多媒体播放器界面设计和功能实现主界面设计结构框架图:主界面主界面音频播放器音乐播放器图形处理图片处理文字效果音频播放器音乐播放器图形处理图片处理文字效果打开VC 6.0,新建MFC工程,基于对话框,名称为多媒体课设向主窗口拖一个Tab控件,并调整大小使之占据2/3主窗口大小,并为Tab添加类向导,添加IDC_TAB1的变量:m_tab完成后在“多媒体课设Dlg.cpp”中的OnInitDialog添加如下代码:/ Set the icon for this dialog. The framework does this automatically/
8、when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herem_tab.InsertItem(0,图形处理); m_tab.InsertItem(1,图片处理); m_tab.InsertItem(2,文字处理); m_tab.InsertItem(3,音乐播放);m_tab.InsertItem(4,音频播放); RECT rc;
9、m_tab.GetClientRect(&rc);m_draw.Create(IDD_DRAW_DIALOG,&m_tab);m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);m_picture.Create(IDD_PICTURE_DIALOG,&m_tab);m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_music.Create(IDD_MUSIC_DIALOG,&m_tab);m_music.SetWindowPos
10、(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_movie.Create(IDD_MOVIE_DIALOG,&m_tab);m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_word.Create(IDD_WORD_DIALOG,&m_tab);m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);return TRUE; / return TRUE unless you set the
11、 focus to a control在添加类向导OnSelchangeTab1()中添加代码:void CMyDlg:OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereCRect rc;m_tab.GetClientRect(&rc);switch(m_tab.GetCurSel()case 0: m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_mu
12、sic.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);break;case 1:m_movie.SetWindowPos(NULL,5
13、,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDO
14、W);break;case 2: m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW); m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_word.SetWindowP
15、os(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);break;case 3:m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW); m_draw.SetWindowPos(NULL,5,20,rc.right,
16、rc.bottom,SWP_HIDEWINDOW);m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);break;case 4:m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWIND
17、OW);m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);break;*pResult = 0;本作业分为5个部分:图形处理,图片处理,文字处理,音乐播放,音频播放(1)分别建立5个资源:选择菜单栏的“插入”,选择窗体,窗体名称分别为:DRAW,Picture,Word,MUSIC,MOVIE并将窗体的样式改为如下:(2)分别为5个窗体创建变量名称:在“多媒课设Dlg.h”中添加变量:
18、另外将5个部分的头文件全部加到“多媒体课设Dlg.h”中,才能调用哦(3)插入背景图片:菜单栏选择“插入”,选择“资源”,选择“Bitmap”,点击“引入”,选择BMP格式的图片名称为IDB_BITMAP4,在OnPaint()添加如下代码:else/CDialog:OnPaint();CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP4);
19、BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);二各个板块设计:(1)图形处理:图形处理设计框架图:图形处理界面图形处理界面选择图形清空面板改变填充颜色选择线型改变画笔颜色输入线宽选择图形清空面板改变填充颜色选择线型改变画笔颜色输入线宽实线点线虚线椭圆
20、直线实线点线虚线椭圆直线矩形涂鸦矩形涂鸦设计如图:插件名称ID直线IDC_Line矩形IDC_Rect椭圆IDC_Elipse涂鸦IDC_Tuya线型IDC_Linestyle线宽IDC_Linewidth画笔颜色IDC_Pen color填充颜色IDC_Brushcolor清空面板IDC_clear绘画区域IDC_Show功能实现:在Draw.h添加变量:设置默认值:DRAW:DRAW(CWnd* pParent): CDialog(DRAW:IDD, pParent)/AFX_DATA_INIT(DRAW)m_linewidth = 0;f_move=0;color_pen=RGB(255
21、,0,0);color_brush=RGB(255,255,255);Hcursor=AfxGetApp()-LoadStandardCursor(IDC_CROSS);/AFX_DATA_INIT在OnInitDialog()中设置线型的选择和默认值,代码如下:BOOL DRAW:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization hereCheckRadioButton(IDC_Line,IDC_Tuya,IDC_Rect);/默认选择画矩形m_linestyle.AddString(实线);m_li
22、nestyle.AddString(虚线);m_linestyle.AddString(点线); m_linestyle.SetCurSel(0);/默认画实线return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE在OnPaint添加如下代码:void DRAW:OnPaint() CPaintDC dc(this); / device context for painting/ TODO: Add your mess
23、age handler code hereUpdateData(TRUE);CRect rect;GetDlgItem(IDC_SHOW)-GetWindowRect(&rect);ScreenToClient(&rect);CBrush brush(RGB(255,255,255);dc.FillRect(CRect(rect.left,rect.top+8,rect.right,rect.bottom),&brush);/ Do not call CDialog:OnPaint() for painting messages添加LButtonDown函数响应:void DRAW:OnLBu
24、ttonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultUpdateData(TRUE);m_BeginPoint = point;m_EndPoint = point;SetCapture();/执行这条语句后,当鼠标移动到本窗口以外时,鼠标消息仍然被发送给本窗口;f_move = 1; CRect rect; GetClientRect(&rect);ClientToScreen(&rect);CDialog:OnLButtonDown(nFlags,
25、 point);添加LButtonUp函数响应:void DRAW:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultCDC *dc=GetDC();if(f_move):ReleaseCapture();/停止捕获鼠标消息 draw(point,1); f_move = 0;CDialog:OnLButtonUp(nFlags, point);添加MouseMove函数响应:void DRAW:OnMouseMove(UINT nFlags,
26、 CPoint point) / TODO: Add your message handler code here and/or call defaultdraw(point,0);CDialog:OnMouseMove(nFlags, point);给“线型按钮”添加CBN_SELCHANCE响应函数,代码如下:void DRAW:OnSelchangeLinestyle() / TODO: Add your control notification handler code hereCString str;m_linestyle.GetLBText(m_linestyle.GetCurSe
27、l(),str);if(0 = strxpare(实线) type = PS_SOLID;if(0 = strxpare(虚线)type = PS_DASH;if(0 = strxpare(点线)type = PS_DOT;添加draw()函数,实现各种功能的绘图:void DRAW:draw(CPoint point, int k)CPen pen(type,m_linewidth,color_pen);CClientDC ClientDC(this);ClientDC.SelectObject(&pen);CBrush brush(color_brush);ClientDC.SelectO
28、bject(&brush);int j; j = GetCheckedRadioButton(IDC_Line,IDC_Tuya);if(f_move)switch(j) case IDC_Rect: ClientDC.SetROP2(R2_NOT); ClientDC.MoveTo(m_BeginPoint); ClientDC.Rectangle(m_BeginPoint.x,m_BeginPoint.y,m_EndPoint.x,m_EndPoint.y); if(k=1) ClientDC.SetROP2(R2_COPYPEN); ClientDC.MoveTo(m_BeginPoin
29、t); ClientDC.Rectangle(m_BeginPoint.x,m_BeginPoint.y,point.x,point.y); m_EndPoint=point; break; case IDC_Line:ClientDC.SetROP2(R2_NOT);ClientDC.MoveTo(m_BeginPoint);ClientDC.LineTo(point); if(k = 1)ClientDC.SetROP2(R2_COPYPEN);ClientDC.MoveTo(m_BeginPoint);ClientDC.LineTo(point);m_EndPoint=point;bre
30、ak;case IDC_Ellipse:ClientDC.SetROP2(R2_NOT);ClientDC.MoveTo(m_BeginPoint);ClientDC.Ellipse(m_BeginPoint.x,m_BeginPoint.y,m_EndPoint.x,m_EndPoint.y);if(k=1)ClientDC.SetROP2(R2_COPYPEN);ClientDC.MoveTo(m_BeginPoint);ClientDC.Ellipse(m_BeginPoint.x,m_BeginPoint.y,point.x,point.y);m_EndPoint=point;brea
31、k;case IDC_Tuya:ClientDC.MoveTo(m_BeginPoint);ClientDC.LineTo(point);m_BeginPoint = point;break;给“填充颜色”按钮添加单击响应:void DRAW:OnBrushcolor() / TODO: Add your control notification handler code hereCColorDialog m_pColorDlg;m_pColorDlg.m_cc.Flags = CC_ANYCOLOR|CC_ENABLEHOOK;if(m_pColorDlg.DoModal() = IDOK)
32、color_brush = m_pColorDlg.GetColor();给“画笔颜色”按钮添加单击响应:void DRAW:OnPencolor() / TODO: Add your control notification handler code hereCColorDialog m_pColorDlg;m_pColorDlg.m_cc.Flags = CC_ANYCOLOR|CC_ENABLEHOOK;if(m_pColorDlg.DoModal() =IDOK)color_pen = m_pColorDlg.GetColor();添加“情况面板”按钮单击响应:void DRAW:On
33、clear() / TODO: Add your control notification handler code hereInvalidate();(2)图片处理:图形处理设计框架图:图片处理界面图片处理界面打开图片打开图片轮廓杂色反色浮雕锐化轮廓杂色反色浮雕锐化鼠标处的鼠标处的RGB和颜色蓝绿颜色红蓝绿颜色红设计如图:控件名称ID图形显示区域IDC_DRAW打开IDC_OPEN锐化IDC_sharp浮雕IDC_fudiao反色IDC_fanse轮廓IDC_lunkuo杂色IDC_zase(编辑框)红IDC_RED(编辑框)蓝IDC_GREEN(编辑框)绿IDC_BLUE(编辑框)显示颜色
34、IDC_COLOR实现功能:在Picture.h中添加变量:在OnPaint()添加代码如下:void Picture:OnPaint() CPaintDC dc(this); / device context for painting/ TODO: Add your message handler code hereCDialog:OnPaint();CWnd*pWnd=GetDlgItem(IDC_DRAW);pWnd-UpdateWindow();DrawPhoto();/ Do not call CDialog:OnPaint() for painting messages添加Draw
35、Photo()函数,代码如下:void Picture:DrawPhoto() if(!m_hBitmap) return; CBitmap m_bmp; m_bmp.Attach(m_hBitmap); BITMAP bm; m_bmp.GetObject(sizeof(BITMAP),&bm); float fScale; fScale=(float)bm.bmHeight/(float)bm.bmWidth; CWnd*pWnd=GetDlgItem(IDC_DRAW); CDC*pDC=pWnd-GetDC(); CRect reClient; int nWidth,nHeight,n
36、X=0,nY=0; pWnd-GetClientRect(reClient); nWidth=reClient.Width(); nHeight=(int)(float)nWidth*fScale); nX=0; nY=(reClient.Height()-nHeight)/2; if(nHeightreClient.Height() nHeight=reClient.Height(); nWidth=(int)(float)nHeight/fScale); nX=(reClient.Width()-nWidth)/2; nY=0; CDC dcMem; dcMem.CreateCompati
37、bleDC(pDC); CBitmap *pOldbmp=dcMem.SelectObject(&m_bmp); reClient.DeflateRect(0,0); pDC-Rectangle(reClient); pDC-StretchBlt(nX,nY,nWidth,nHeight,&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY); dcMem.SelectObject(pOldbmp);给“打开”按钮添加单击响应,代码如下:void Picture:OnOpen() / TODO: Add your control notification hand
38、ler code herestatic char BASED_CODE szFilter=图片文件(*.bmp)|*.bmp|; CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);if(IDOK!=dlg.DoModal()return;m_hBitmap=(HBITMAP):LoadImage(AfxGetInstanceHandle(),dlg.GetPathName(),IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);Get
39、DlgItem(IDC_sharp)-EnableWindow(TRUE);Invalidate();给“锐化”按钮添加单击响应,代码如下:void Picture:Onsharp() / TODO: Add your control notification handler code hereint sharpLaplacian9=-1,-1,-1,-1,9,-1,-1,-1,-1; CWnd*pWnd=GetDlgItem(IDC_DRAW);CDC*pDC=pWnd-GetDC();pWnd-UpdateWindow();CRect reClient;pWnd-GetClientRect
40、(reClient);int nWidth=reClient.Width();int nHeight=reClient.Height();COLORREF bkPixel400300;for(int bi=0;binWidth;bi+)for(int bj=0;bjGetPixel(bi,bj);int i,j;for(i=1;inWidth-1;i+) for(j=1;jnHeight-1;j+) int rr=0,gg=0,bb=0,index=0; for(int col=-1;col=1;col+) for(int row=-1;row255) rr=255; else if(rr25
41、5) gg=255; else if(gg255) bb=255; else if(bbSetPixelV(i,j,RGB(rr,gg,bb); 给“浮雕”按钮添加单击响应,代码如下:void Picture:Onfudiao() / TODO: Add your control notification handler code hereCStatic *pStatic=(CStatic * )GetDlgItem(IDC_DRAW);CDC *pDC=pStatic-GetDC();CRect rect;pStatic-GetClientRect(&rect);COLORREF color
42、1,color2;BYTE r,g,b;for(int i=0;irect.right;i+)for (int j=0;jGetPixel(i,j);color2=pDC-GetPixel(i+1,j+1);r=GetRValue(color1)-GetRValue(color2)+128;g=GetGValue(color1)-GetGValue(color2)+128;b=GetBValue(color1)-GetBValue(color2)+128;if(r255)r=255;else if (r255)g=255;else if (g255)b=255;else if (bSetPix
43、el(i,j,RGB(r,g,b);给“反色”按钮添加单击响应,代码如下:void Picture:Onfanse() / TODO: Add your control notification handler code hereCStatic *pStatic=(CStatic * )GetDlgItem(IDC_DRAW);CDC *pDC=pStatic-GetDC();CRect rect;pStatic-GetClientRect(&rect);BYTE r,g,b;COLORREF m_clr; for (int x=0;xrect.Width();x+) for (int y=0
44、;yGetPixel(x,y);r=GetRValue(m_clr);g=GetGValue(m_clr);b=GetBValue(m_clr);r=abs(255-r);g=abs(255-g);b=abs(255-b);pDC-SetPixel(x,y,RGB(r,g,b); 给“轮廓”按钮添加单击响应,代码如下:void Picture:Onlunkuo() / TODO: Add your control notification handler code hereCStatic *pStatic=(CStatic * )GetDlgItem(IDC_DRAW);/pStatic-Ge
45、tClientRect(lp);CDC *pDC=pStatic-GetDC();CRect rect;pStatic-GetClientRect(&rect);int x,y;for (x = 0;xrect.right;x+)for (y=0;yGetPixel(x,y);if (m_color =RGB(255,255,255)|(m_color=RGB(0,0,0)|(m_color = RGB(252,197,30) pDC-SetPixel(x,y,m_color);elsepDC-SetPixel(x,y,RGB(255,255,255);给“杂色”按钮添加单击响应,代码如下:v
46、oid Picture:Onzase() / TODO: Add your control notification handler code hereCStatic *pStatic=(CStatic * )GetDlgItem(IDC_DRAW);CDC *pDC=pStatic-GetDC();CRect rect;pStatic-GetClientRect(&rect);int r,g,b;for(int i=0;irect.right;i+) int *a; int num=rand()%(rect.bottom*2/5); a=new intnum; for (int j=0;jS
47、etPixel(i,aj,RGB(r,g,b); 实现显示鼠标处的颜色:添加MouseMoveh函数响应void Picture:OnMouseMove(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultCWnd* temp=ChildWindowFromPoint(point);CDC* m_DC=temp-GetDC();COLORREF m_color1;this-MapWindowPoints(temp,&point,1);m_color1=m_DC-GetP
48、ixel(point);int r,g,b;r=GetRValue(m_color1);g=GetGValue(m_color1);b=GetBValue(m_color1);CString str;str.Format(%d,r);CEdit *edit;edit=(CEdit *)GetDlgItem(IDC_RED);edit-SetWindowText(str);edit=(CEdit *)GetDlgItem(IDC_GREEN);str.Format(%d,g);edit-SetWindowText(str);edit=(CEdit *)GetDlgItem(IDC_BLUE);s
49、tr.Format(%d,b);edit-SetWindowText(str);CRect rc;m_color.GetClientRect(rc);CDC* dc = m_color.GetDC();CBrush br(RGB(r,g,b);dc-FillRect(rc,&br);CDialog:OnMouseMove(nFlags, point);(3)文字处理文字处理设计框架图:文字处理界面文字处理界面倾斜下划线空心字文字渐变旋转字体3D倾斜下划线空心字文字渐变旋转字体3D显示设计界面:直接在对话框里绘制,没有什么插件在Word.h添加变量和函数在OnPaint()添加如下代码:void
50、 Word:OnPaint() CPaintDC dc(this); / device context for painting/ TODO: add draw code for native data here xuanzhuan();sanD();jianbianyanse();SetTimer(1,500,NULL);qingxie();kongxinzi();/ Do not call CDialog:OnPaint() for painting messagesxuanzhuan()函数代码如下:void Word:xuanzhuan() CDC* pDC=GetDC();CFont
51、 m_font;pDC-SetBkMode(TRANSPARENT);/透明的CRect m_rect;GetClientRect(m_rect);pDC-FillRect(m_rect,NULL);pDC-SetViewportOrg(m_rect.Width()/2,m_rect.Height()/2);for(int i=1;iSelectObject(m_font);pDC-TextOut(0,0,多媒体编程软件技术);pDC-SetTextColor(RGB(255-i,i*250,i+50);m_font.DeleteObject();jianbianyanse()函数代码如下:v
52、oid Word:jianbianyanse() CDC* pDC=GetDC();CFont font;font.CreatePointFont(600,黑体,pDC);CFont* pOldFont=pDC-SelectObject(&font);CString str(文字颜色渐变);pDC-SetTextColor(RGB(m_nRed,m_nGreen,m_nBlue);pDC-TextOut(0,0,str);pDC-SelectObject(pOldFont);qingxie()函数代码如下:void Word:qingxie() CDC* pDC=GetDC(); CRect
53、rect;/获取客户区GetClientRect(&rect);CFont mFont; LOGFONT lFont; /创建LOGFONT结构体ZeroMemory(&lFont, sizeof(lFont); /为其参数赋值lFont.lfHeight=30; /逻辑高度lFont.lfWidth=30; /逻辑宽度lFont.lfUnderline=1;/下划线lFont.lfStrikeOut=0;/删除线lFont.lfWeight=1;/加粗lFont.lfItalic=1;/倾斜lstrcpy(lFont.lfFaceName, _T(楷体); mFont.CreateFontI
54、ndirect(&lFont);/依据LOGFONT创建字体pDC-SelectObject(mFont);pDC-SetTextColor(RGB(0,0,255);pDC-TextOut(0,100,软件101刘洋);mFont.DeleteObject();pDC-SelectObject(mFont); kongxinzi()函数代码如下:void Word:kongxinzi() CDC* pDC=GetDC(); CRect rect;/获取客户区GetClientRect(&rect);CFont mFont; CString m_CText=多媒体编程软件技术; VERIFY(
55、mFont.CreateFont(60,30,0,0,FW_HEAVY,TRUE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,宋体); /创建字体CPen pen(PS_SOLID,2,RGB(255,0,0); pDC-SelectObject(&pen);pDC-BeginPath(); /开始路径CFont *pOldFont=pDC-SelectObject(&mFont); /选中创建的字体pDC-SetBkMode(TRANSPA
56、RENT); /设置设备背景模式为透明pDC-TextOut(0,350,m_CText); /输出文字pDC-EndPath(); /关闭路径pDC-StrokePath(); /用当前字体绘制路径mFont.DeleteObject();/删除字体对象pDC-SelectObject(pOldFont);/回复之前选中的对象sanD()函数代码如下:void Word:sanD() CRect rect; GetClientRect(&rect);CDC *pDC=this-GetDC();CString string;string=多媒体编程;CFont m_fontLogo;m_fon
57、tLogo.CreateFont(144, 0, 0, 0, 一五5, FALSE, FALSE,0,0,0,0,0,0, 黑体);/创建字体;pDC-SetBkMode(TRANSPARENT);CRect rectText;GetClientRect(&rectText);CFont * OldFont = pDC-SelectObject(&m_fontLogo);COLORREF OldColor = pDC-SetTextColor(:GetSysColor( COLOR_3DSHADOW);/阴影状态显示文字;pDC-DrawText( string, rectText+CPoin
58、t(2,2) , DT_SINGLELINE | DT_LEFT |DT_VCENTER|DT_CENTER);pDC-SetTextColor(RGB(255,200,0);pDC-DrawText( string, rectText, DT_SINGLELINE | DT_LEFT |DT_VCENTER|DT_CENTER);pDC-SetTextColor( OldColor);pDC-SelectObject(OldFont);m_fontLogo.DeleteObject();添加OnTIMER函数响应并添加如下代码实现颜色渐变:void Word:OnTimer(UINT nID
59、Event) / TODO: Add your message handler code here and/or call defaultif(m_nRed=一五0)m_nRed+=50;else if(m_nRed=255)m_nRed=0;elsem_nRed=255;if(m_nGreen=一五0)m_nGreen+=30;else if(m_nGreen=255) m_nGreen=0;else m_nGreen=255;if(m_nBluem_hWnd,strfilepath); m_list.InsertString(m_list.GetCount(),strfilename);/
60、获取文件名 m_list.SetCurSel(m_list.GetCount()-1);给“打开”按钮添加单击响应:void MUSIC:OnOpen() / TODO: Add your control notification handler code hereCString strfilename;int index=m_list.GetCurSel();CString mtime;CClientDC dc(this);hour=0;minute=0;second=0;dc.SetBkColor(RGB(124,252,0);/设置放置计数器区域的外观dc.SetTextColor(RG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- QC/T 1270-2026不停车收费系统车载电子单元芯片技术要求及试验方法
- 2026事业单位工勤技能-江西-江西假肢制作装配工三级(高级工)历年参考题库含答案详解3套试卷
- 2026年部编版新教材道德与法治八年级上册第5课《社会生活讲道德》教学设计
- 病房安全健康教育
- 儿童常见康复疾病
- 神经系统症状和体征护理
- 美丽校园自查报告(3篇)
- 2026年数据标注自动化脚本测试方法
- 甲状腺健康图谱集
- 焦虑障碍患者关怀
- 绵阳英才中学2025初一入学语文分班考试真题含答案
- 新二升三暑假英语26个字母每日一练过关练22天
- 2026年高校行政管理岗招聘笔试典型试题及要点含答案
- 光伏施工方案范文模板
- 2026年时事政治考试题库及答案(100题)
- 2026年危险化学品生产单位安全生产管理人员安全生产模拟考试题库及答案
- 高标准农田建设技术工作手册
- 魏家凉皮考勤制度
- 无刷电机培训
- 临床医学大三《急性脑梗塞合并一氧化碳中毒》教学设计
- 全口吸附性义齿知情同意书
评论
0/150
提交评论