第9章 多媒体编程.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:48 大小:306KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第9章 多媒体编程.ppt

第9章多媒体编程.ppt

预览

免费试读已结束,剩余 38 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第9章多媒体编程本章要点:什么是GDI+GDI+的基本使用用GDI+显示文本和图形用GDI+操纵图像9.1接触GDI+9.1.1建立自定义控件9.1.2测试自定义的控件下面的任务是编写一个测试程序来查看效果。新建一个Windows窗体程序,起名为Case9_1。我们需要把刚刚生成的MyButton.dll的引用加入到现在的项目中,方法如下:用鼠标指向工具箱图标,让工具箱出现,可以在任何一个选项卡上单击鼠标右键(但最好还是在“Windows窗体”上,因为要添加的控件也可以算是一个Windows窗体控件),在弹出菜单中选择【自定义工具箱】。在弹出的“自定义工具箱”对话框中,选择【.NET框架组件】页,然后单击【浏览】按钮找到MyButton.dll文件,选择【打开】,然后单击【确定】按钮关闭对话框,这时在选项卡末尾发现新添加的GradientButton控件。可以像使用普通控件一样把它放到窗体上,这时窗体上就出现了带有渐变色的按钮GradientButton1。由于在代码中已编写了处理文字的部分,现在就可以改变控件的Text属性了(譬如改为“你好”),还可以改变控件的Font属性,你会发现这些都被正确地处理了,字的颜色是由ForeColor属性控制的,这也工作得很好。如果查看“属性”窗体的“杂项”,会发现两个在Button控件中不存在的属性:StartColor和EndColor,这是我们自定义的,它可以很好地集成到IDE中。改变这两个属性,也会改变按钮的外观。双击控件,一样会弹出代码窗口,可以输入下面的代码:StaticiCounterAsInteger=0StaticsTextAsString=GradientButton1.TextiCounter+=1GradientButton1.Text=sText&iCounter按F5键运行程序,在窗体中单击几次控件,可以看到,虽然按钮上的文字如我们所愿地发生着变化,但是按钮的颜色却在发生无法捉摸的改变,这是因为在设计时设定了按钮的颜色是随机变化的。9.1.3点评:Graphics对象这是一个比较复杂的案例,尽管它仅仅只是揭示了GDI+强大功能的冰山一角。对于继承、自定义属性这些内容,在第3章中讲过,你应该不会陌生,现在就把精力集中到使用GDI+的部分,也就是OnPaint事件处理程序上。从OnPaint过程的PaintEvent参数中,可以得到几个重要的对象,其中之一就是Graphics对象:DimgAsGraphics=pe.GraphicsGraphics对象是GDI+的基础对象,如果把GDI+理解成一套绘图的工具,例如笔、刷子和颜料等,那么Graphics就是画布,一切绘图都是发生在Graphics对象之上的。创建Graphics对象后,可以使用它绘制线、填充形状和绘制文本等。与Graphics对象一起使用的主要对象如表9.1所示。接下来要取得需要画的区域,这样才会知道画的范围有多大,一般来说,这就是控件所占的屏幕矩形的大小。不仅如此,本例中还用Inflate语句把这个矩形缩小了一点,这是因为如果画的区域与Button大小一样大,就看不出Button的凸起效果了,你可以试着把这一句去掉,看看会发生什么现象。再接着构造一个Brush对象,也就是画刷:DimbgBrushAsBrush=NewDrawing2D.LinearGradientBrush(_NewPoint(clientRect.X,clientRect.Y),_NewPoint(clientRect.Width,clientRect.Height),_StartColor,EndColor)它很像真的画刷,可以在画布上画出各种颜色,而且使用的这个LinearGradientBrush还可以刷出渐变色。g.FillRectangle(bgBrush,clientRect)它调用Graphics类的FillRectange方法,让bgBrush对象在clientRect的矩形中画上它想画的东西,我们知道,它会画出渐变色来。依此推广,所有的GDI+绘图几乎都是这种格式,用Graphics类的某个方法(画圆,画方或者写几个字)调用某个画笔(画刷、字体……),画在某个地方(可能还要加上格式什么的)。比如下面的画字符串语句:g.DrawString(Me.Text,Me.Font,NewSolidBrush(Me.ForeColor),clientRectF,m_textFormat)它调用对象本身的字体,写出对象本身的Text属性字符串,这就是为什么在“属性”窗体中