南工程多媒体处理综合应用设计Word文档下载推荐.docx

上传人:b****4 文档编号:6453412 上传时间:2023-05-06 格式:DOCX 页数:53 大小:2.38MB
下载 相关 举报
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第1页
第1页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第2页
第2页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第3页
第3页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第4页
第4页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第5页
第5页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第6页
第6页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第7页
第7页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第8页
第8页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第9页
第9页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第10页
第10页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第11页
第11页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第12页
第12页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第13页
第13页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第14页
第14页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第15页
第15页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第16页
第16页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第17页
第17页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第18页
第18页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第19页
第19页 / 共53页
南工程多媒体处理综合应用设计Word文档下载推荐.docx_第20页
第20页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

南工程多媒体处理综合应用设计Word文档下载推荐.docx

《南工程多媒体处理综合应用设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《南工程多媒体处理综合应用设计Word文档下载推荐.docx(53页珍藏版)》请在冰点文库上搜索。

南工程多媒体处理综合应用设计Word文档下载推荐.docx

2.1图像显示的基本方法

显示图像的方法并不复杂,图像已经绘制好保存在文件中,需要做的工作就是有效加载图像文件并让它显示出来,这里我们讨论几种最常用的方法。

1.使用Image类对象

抽象类Image是System:

:

Drawing命名控件中所有图像类的基类,它有Bitmap类和Metafile类两个派生类,不仅可以处理位图(Bitmap)和图元文件(Metafile),而且支持以各种图像文件格式创建Image类对象,包括常见的BMP、JGP、GIF、PNG、TIFF和ICON等格式。

Image类的常用属性和方法如表2_1和表2_2所示。

表2_1Image类部分常用属性

属性名称

功能描述

Height

获取当前Image的高度(以像素为单位)

HorizontalResolution

获取当前Image的水平分辨率(以“像素/英寸”为单位)

Palette

获取或设置用于当前Image的调色板

PhysicalDimension

获取当前图像的实际宽度和高度(以像素为单位)

PixelFormat

获取此Image的像素格式

RawFormat

获取此Image的文件格式

Size

获取此图像的以像素为单位的宽度和高度。

VerticalResolution

获取此Image的垂直分辨率(以“像素/英寸”为单位)

Width

获取此Image的宽度(以像素为单位)

表2_2Image类部分常用方法

方法名称

Clone

创建此Image的一个精确副本。

Dispose()

释放由此Image占用的所有资源。

FromFile(String)

从指定的文件创建Image

GetBounds

以指定的单位获取图像的界限

GetPixelFormatSize

返回指定像素格式的颜色深度(每个像素的位数)

FromHbitmap

从Windows句柄创建Bitmap

FromStream

从指定的数据流创建Image

RotateFlip

该方法旋转、翻转或者同时旋转和翻转Image。

Save

将图像以指定的格式保存到指定的流中

2、使用的CDC类的位图函数来输出图像。

BOOL 

StretchDLBit(HDChdc,int 

x,int 

y,int 

nWidth,int 

nHeight,CDC* 

pSrcDC,int 

xSrc,int 

ySrc,int 

nSrcWidth,int 

nSrcHeight,DWORD 

dwRop);

x,y 

表示目标矩形区域左上角的x,y坐标点;

nWidth,nHeight:

表示目标设备中绘制位图的宽度和高度;

pSrcDC 

表示源设备上下文对指针;

xSrc,ySrc:

表示源设备上下文的起点x,y轴坐标;

nSrcWidth,nSrcHeight:

表示需要复制的位图宽度和高度;

dwRop:

表示光栅操作代码。

COLORREF 

GetPixel( 

int 

x, 

) 

const;

//返回坐标点的颜色值。

SetPixel( 

y, 

crColor 

);

//设置的颜色值 

BYTE 

GetRValue(DWORD 

rgb 

//获取一个颜色值的RGB各个分量:

GetGValue(DWORD 

GetBValue(DWORD 

3、获取鼠标位置的颜色值 

获取某一点的颜色只要得到当前鼠标的设备环境CDC类对象即可,因为调用CDC类的GetPixel方法可获取某一点的颜色值。

VC提供了三个宏,用于获取某一颜色的红、绿、蓝三基色。

1)GetRValue宏 

该宏用于获取指定颜色的红颜色值 

2)GetGValue宏 

该宏用于获取指定颜色的绿颜色值 

3)GetBValue宏 

该宏用于获取指定颜色的蓝颜色值 

rgb标识一个颜色值。

返回值:

指定颜色的红色值。

指定颜色的绿色值。

指定颜色的蓝色值。

4、GetPixel和SetPixel介绍 

1)GetPixel方法 

该方法用于获取某一点的颜色值。

语法:

COLORREF 

POINT 

point 

参数:

x、y、point标识坐标点。

坐标点的颜色值。

2)SetPixel方法 

该方法用于设置某一点的颜色值。

point, 

参数x、y、point标识坐标点。

crColor标识设置的颜色值。

坐标点实际显示的颜色值。

2.2图形绘制的实现原理

(1)画笔(Pen):

用于在设备环境中绘制直线,曲线和多边形边框。

创建画笔:

1)CPen();

2)CPen(intnPenStyle,intnWidth,COLORREFcrColor);

nPenStyle:

画笔的样式

PS_SOLID创建一个实线画笔,

PS_DASH创建一个虚线画笔,

PS_DOT创建一个点线画笔,

nWidth:

画笔的宽度

crColor:

画笔的颜色(颜色用RGB值来描述)

(2)画刷(CBrush):

常用于填充个区域诸如多边形,椭圆和路径等图形内部区域

创建画刷:

1)CreateSolidBrush用指定的颜色初始化画刷

2)CreateHatchBrush用指定的阴影线初始化画刷

3)CreateBrushIndirect用结构LOGBRUSH中指定的风

格、颜色和模式初始化画刷。

(3)画直线:

LineTo(intx,inty)

画椭圆:

Ellipse(intx1,inty1,intx2,inty2)

画矩形:

Rectangle(intx1,inty1,intx2,inty2)

x1,y1为边界矩形左上角的坐标,x2,y2为边界

矩形右下角的坐标

2.3文字处理基本技巧

1文字处理的基本知识 

Windows使用了两种主要字体:

一种是等宽字体,一种是可变宽字体。

同时Windows又定义了三种不同类型的字体:

光栅字体(设备相关的点阵图字体)、矢量字体(设备无关的由一系列线段构成的字体)、TrueType字体(设备无关的用线条和样条曲线来定义轮廓的字体),其中TrueType字体可以在进行任何限度的缩放后,而仍然保持良好的字体质量。

此外,还有OpenType字体,它也是设备无关的,可以用来定义手写字体。

无论哪种字体,在Windows系统中都是使用TEXTMERIC和LOGFONT两个结构来进行描述的。

在应用中通过这两个结构来获取字体信息,定义显示文字所需要的字体。

2文本输出函数 

函数名

功能 

TextOut

用当前字体在指定位置处写一个字符串

ExTextOut 

用当前字体在矩形区域内写一个字符串

TabbedTextOut 

在指定位置写一个字符串

DrawText 

在指定矩形中绘制格式化的文本

文字处理的基本步骤 

1)获取设备环境(CDC* 

pDC) 

2)设置系统字体 

----默认字体 

----得到当前的字体(部分)信息,以该信息输出 

-----创建自定义字体,选入设备环境 

3)输 

出 

文 

本 

(文本输出函数) 

4设置系统字体的步骤 

1)创建字体对象:

CFont 

font;

// 

font为字体对象 

2)创建字体 

CreateFont() 

CreatePointFont 

CreateFontIndirect() 

CreateFontFontIndirect() 

3) 

调用成员函数SelectObject将字体选入设备环境:

SelectObject(&

font);

2.4音频/视频处理介绍

Mediaplayer控件常用属性

属性/方法名:

说明:

[基本属性]

URL:

String;

指定媒体位置,本机或网络地址

uiMode:

播放器界面模式,可为Full,Mini,None,Invisible

playState:

integer;

播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪

enableContextMenu:

Boolean;

启用/禁用右键菜单

fullScreen:

boolean;

是否全屏显示

[controls]

wmp.controls//播放器基本控制

controls.play;

播放

controls.pause;

暂停

controls.stop;

停止

controls.currentPosition:

double;

当前进度

controls.currentPositionString:

string;

当前进度,字符串格式。

如“00:

23”

controls.fastForward;

快进

controls.fastReverse;

快退

controls.next;

下一曲

controls.previous;

上一曲

[settings]

wmp.settings//播放器基本设置

settings.volume:

音量,0-100

settings.autoStart:

是否自动播放

settings.mute:

是否静音

settings.playCount:

播放次数

[currentMedia]

wmp.currentMedia//当前媒体属性

currentMedia.duration:

媒体总长度

currentMedia.durationString:

媒体总长度,字符串格式。

如“03:

24”

currentMedia.getItemInfo(conststring);

获取当前媒体信息"

Title"

=媒体标题,"

Author"

=艺术家,"

Copyright"

=版权信息,"

Description"

=媒体内容描述,"

Duration"

=持续时间(秒),"

FileSize"

=文件大小,"

FileType"

=文件类型,"

sourceURL"

=原始地址

currentMedia.setItemInfo(conststring);

通过属性名设置媒体信息

currentMedia.name:

同currentMedia.getItemInfo("

[currentPlaylist]

wmp.currentPlaylist//当前播放列表属性

currentPlaylist.count:

当前播放列表所包含媒体数

currentPlaylist.Item[integer];

获取或设置指定项目媒体信息,其子属性同wmp.currentMedia

三、具体设计方法即步骤

1)启动VisualStudio2012开发环境,在菜单中选择“文件”→“新建”→“项目”,弹出“新建项目”对话框;

在对话框的左侧“项目类型”选项中选择CLR,在右侧显示的已安装应用程序项目模板中选择“MFC”,输入大作业项目名称“Commixwork-240121214”,选择好合适的程序文件存放路径,点“确定”按钮完成,如图3-1所示。

图3-1创建大作业项目

3.打开资源视图,在菜单的主框架上添加文字处理、绘图、图像处理、音频视频、清屏子菜单

4.图片处理

图片采用对话框形式制作

创建如图所示的PHOTO对话框

采用非模式对话框打开:

在commixwork-240121214view.cpp文件中添加代码如下:

voidCCommixwork240121214View:

OnPhoto()

{

//TODO:

在此添加命令处理程序代码

CPhoto*photo=newCPhoto;

photo->

Create(IDD_Photo);

ShowWindow(SW_NORMAL);

}

ID见上

首先添加一些成员变量

CEditm_red;

CEditm_green;

CEditm_blue;

CStaticm_test;

private:

intnum;

4.1打开图片

代码如下:

voidCPhoto:

OnBnClickedButton1()//打开图片

在此添加控件通知处理程序代码

CStringfilter;

filter="

所有文件(*.bmp,*.jpg,*.gif,*tiff)|*.bmp;

*.jpg;

*.gif;

*.tiff|BMP(*.bmp)|*.bmp|JPG(*.jpg)|*.jpg|GIF(*.gif)|*.gif|TIFF(*.tiff)|*.tiff||"

;

CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter,NULL);

//按下确定按钮dlg.DoModal()函数显示对话框

if(dlg.DoModal()==IDOK)

{

//打开对话框获取图像信息

CStringBmpName=dlg.GetPathName();

//获取文件路径名如D:

\pic\abc.bmp

CStringEntName=dlg.GetFileExt();

//获取文件扩展名

EntName.MakeLower();

//将文件扩展名转换为一个小写字符

if(EntName.Compare(_T("

bmp"

))==0)

{

//定义变量存储图片信息

BITMAPINFO*pBmpInfo;

//记录图像细节

BYTE*pBmpData;

//图像数据

BITMAPFILEHEADERbmpHeader;

//文件头

BITMAPINFOHEADERbmpInfo;

//信息头

CFilebmpFile;

//记录打开文件

//以只读的方式打开文件读取bmp图片各部分bmp文件头信息数据

if(!

bmpFile.Open(BmpName,CFile:

modeRead|CFile:

typeBinary))

return;

if(bmpFile.Read(&

bmpHeader,sizeof(BITMAPFILEHEADER))!

=sizeof(BITMAPFILEHEADER))

bmpInfo,sizeof(BITMAPINFOHEADER))!

=sizeof(BITMAPINFOHEADER))

pBmpInfo=(BITMAPINFO*)newchar[sizeof(BITMAPINFOHEADER)];

//为图像数据申请空间

memcpy(pBmpInfo,&

bmpInfo,sizeof(BITMAPINFOHEADER));

DWORDdataBytes=bmpHeader.bfSize-bmpHeader.bfOffBits;

pBmpData=(BYTE*)newchar[dataBytes];

bmpFile.Read(pBmpData,dataBytes);

bmpFile.Close();

//显示图像

CWnd*pWnd=GetDlgItem(IDC_STATIC1);

//获得pictrue控件窗口的句柄

CRectrect;

pWnd->

GetClientRect(&

rect);

//获得pictrue控件所在的矩形区域

CDC*pDC=pWnd->

GetDC();

//获得pictrue控件的DC

pDC->

SetStretchBltMode(COLORONCOLOR);

StretchDIBits(pDC->

GetSafeHdc(),0,0,rect.Width(),rect.Height(),0,0,bmpInfo.biWidth,bmpInfo.biHeight,pBmpData,pBmpInfo,DIB_RGB_COLORS,SRCCOPY);

}

}

4.2浮雕、锐化、反色

OnBnClickedButton2()//浮雕

CWnd*pWnd=GetDlgItem(IDC_STATIC1);

CRectrect;

pWnd->

CDC*pDC=pWnd->

pDC->

CWnd*pWnd1=GetDlgItem(IDC_STATIC2);

CRectrect1;

pWnd1->

rect1);

CDC*pDC1=pWnd1->

pDC1->

intr1,g1,b1,r2,g2,b2;

for(inti=1;

i<

rect.right+1;

i++)

for(intj=1;

j<

rect.bottom+1;

j++)

COLORREFcolor=pDC->

GetPixel(i,j);

COLORREFnextcolor=pDC->

GetPixel(i+1,j+1);

//doublem_gray;

r1=GetRValue(color);

g1=GetGValue(color);

b1=GetRValue(color);

r2=GetRValue(nextcolor);

g2=GetGValue(nextcolor);

b2=GetBValue(nextcolor);

r1=r1-r2+128;

g1=g1-g2+128;

b1=b1-b2+128;

if(r1>

255)

r1=255;

elseif(r1<

0)

r1=0;

if(g1>

g1=255;

elseif(g1<

g1=0;

if(b1>

b1=255;

elseif(b1<

b1=0;

color=RGB(r1,g1,b1);

pDC1->

SetPixel(i,j,color);

OnBnClickedButton4()//反色

//FOLLOWEDNODEFORTHEFIRSTMETHOD

BYTEr,g,b;

for(inti=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2