第十章__图形应用程序开发_第1页
第十章__图形应用程序开发_第2页
第十章__图形应用程序开发_第3页
第十章__图形应用程序开发_第4页
第十章__图形应用程序开发_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章图形应用程序开发 10 1GDI 图形操作基础10 2绘图工具10 3图形绘制10 4非规则窗体10 5综合应用 10 1GDI 图形操作基础 10 1 1GDI 基础知识GDI 在System Drawing命名空间中定义 包含了图形处理的许多类 在图形开发中最常用的类如下 图形绘制通过绘图函数来完成 绘图函数 以Draw为前缀的函数用于绘制图形以Fill为前缀的函数用于区域填充 10 1 2坐标系 在GDI 中 对象坐标系是以像素为单位 像素是指屏幕上的亮点 每个像素都有一个坐标点与之对应 默认的坐标原点为对象的左上角 横向向右为X轴的正向 纵向向下为Y轴的正向 在绘制数学函数y f x 的图形时 要产生与数学坐标系相同的效果 则需要将坐标原点移到对象的中心位置 a b 并将y轴坐标值乘 1 在垂直方向翻转图形 变换公式为 x1 a x y1 b y x1 y1 为实际绘图值 Graphice对象坐标变换方法 10 1 3创建图形应用程序 使用GDI 在对象上绘制图形过程 构造画布用对象的CreateGraphics 方法构造Graphics类的实例 Dim画布AsGraphics画布 控件对象 CreateGraphics 建立绘图工具 画笔 画刷 字体等 调用绘图方法绘制图形 调用Dispose方法释放绘图对象 10 2绘图工具 10 2 1画笔PenPen对象提供給绘图指令在Graphics画布上处理图形的轮廓部分 通过使用Pen类可以设置所画线条的颜色 线宽和样式 使用前请引用System Drawing Drawing2D名称空间 创建画笔的格式为 Dim画笔对象AsNewPen 颜色 线宽 例DimpAsNewPen Color Red 5 构造线宽5象素的红色画笔 10 2 1画笔Pen 画笔的DashStyle属性指定线的样式 虚线 设置一条直线的起始端和终止端的样式 画笔对象 SetLineCap StartCap EndCap DashCap StartCap EndCap为线段起终端的样式 DashCap为线段 创建图形应用程序 例10 1建立画布 绘制一个椭圆和一行文字在GDI 中用椭圆的外切矩形来定义椭圆的大小 并确定绘画位置 先指定一个矩形区域 然后用DrawEllipse方法画出椭圆 绘制文字需要声明字体对象和一把画刷 再调用DrawString方法在指定位置输出文字 代码说明 画笔Pen 例10 2用画笔画线DimgAsGraphics 声明Graphicsg Me CreateGraphics 构造画布gDimpAsNewPen Color Red 5 5象素的红色画笔p SetLineCap LineCap Flat LineCap ArrowAnchor DashCap Flat 设置直线起终端的样式g DrawLine p 50 10 300 10 在画布上画有箭头的线p EndCap LineCap Flat 取消画笔终止端的样式p DashStyle DashStyle DashDot 设置点划线样式p Width 2 设置线宽2象素g DrawLine p 50 30 300 30 在画布上画点划线 10 2 2画刷Brush 画刷Brush主要用于封闭图形的填充1 单色刷只能用一种颜色填充区域DimsbAsSolidBrush NewSolidBrush Color Blue 声明了一个蓝色的单色刷sb2 纹理刷用一个图片来填充图形DimtbAsNewTextureBrush NewBitmap 图片名 例使用一张图片创建的纹理刷tbDimtbAsNewTextureBrush NewBitmap icqface gif 画刷Brush 3 渐变刷用线性渐变色来填充图形DimlbAsNewLinearGradientBrush Point1 Point2 Color1 Color2 参数Point1 Point2构成一个矩形区域 Color1 Color2分别设置渐变的起始点颜色和终点颜色 例DimlbAsNewLinearGradientBrush pt1 pt2 Color Blue Color White 渐变刷lb4 网格刷根据条纹模式来设置填充类型DimhbAsNewHatchBrush 条纹类型 前景色 背景色 例DimhbAsNewHatchBrush HatchStyle DarkHorizontal Color Blue Color Yellow 网格刷hb 10 2 3字体Font 字体Font类决定了特定文本的字体格式 比如 字体类型 大小以及风格 用Font类的构造函数建立一种字体 需要3个参数 Dim字体对象AsNewFont FontName FontsSize FontStyle 其中 参数FontName指定字体 FontsSize指定字体大小 FontStyle指定字体样式 例如 DimfAsNewFont 仿宋 20 FontStyle Bold 构建了字体工具f 可书写大小为20象素仿宋粗体字 10 3图形绘制 1 绘制直线Graphics对象 DrawLine pen point1 point2 通过画笔设置所画线条的颜色 线宽和样式 例 DimgAsGraphicsg Me CreateGraphicsDimpAsNewPen Color Black 1 g DrawLine p 10 10 100 100 绘制弧线 Graphics对象 DrawArc pen rect startangle sweepangle rect为Rectangle结构 指定圆的外切矩形区域 pen为画笔 startangle和sweepangle为弧线起始角度和扫过的角度 X轴的正向为0 顺时针方向为正值 逆时针为負值 绘制扇形 绘制扇形 Graphics对象 DrawPie pen rect startangle sweepangle 填充扇形 Graphics对象 FillPie brush rect startangle sweepangle brush为画刷 其他参数与DrawPie方法相同 绘制扇形例 DimgAsGraphicsg Me CreateGraphicsDimpAsNewPen Color Blue 4 画笔DimrectAsNewRectangle 5 5 180 180 g DrawPie p rect 45 135 DimhbAsNewHatchBrush HatchStyle Cross Color Blue Color Yellow 网格刷g FillPie hb rect 45 135 绘制矩形 绘制矩形 Graphics对象 DrawRectangle pen rect 填充矩形 Graphics对象 FillRectangle brush rect 参数pen为画笔 rect为Rectangle结构 指定绘图区域 绘制矩形 使用了Alpha通道设置画刷的颜色 旋转画布 DimgAsGraphicsg Me CreateGraphicsDimpAsNewPen Color Blue DimrectAsNewRectangle 10 40 50 80 建立矩形区域g DrawRectangle p rect 绘制矩形rect X 50 rect Y 70 改变矩形区域rect位置g RotateTransform 30 将画布逆时针旋转30度DimsbAsNewSolidBrush Color FromArgb 100 Color Blue 构造单色画刷g FillRectangle sb rect 使用画刷填充g ResetTransform 将画布复位 绘制椭圆 绘制椭圆 Graphics对象 DrawEllipse pen rect 填充椭圆 Graphics对象 FillEllipse brush rect pen为画笔 rect为Rectangle结构 控制椭圆大小并指定绘图区域 绘制椭圆 DimgAsGraphicsg Me CreateGraphicsDimpAsNewPen Color Blue g DrawEllipse p 5 5 50 50 画圆DimsbAsNewSolidBrush Color Blue 构造单色画刷g FillEllipse sb 60 0 60 80 填充椭圆Dimpt1AsNewPoint 12 12 声明坐标点Dimpt2AsNewPoint 23 33 DimlbAsNewLinearGradientBrush Pt1 Pt2 Color White Color Red 构造渐变画刷g FillEllipse lb 120 0 80 60 填充椭圆 绘制文字 文字绘制 Graphics对象 DrawString string font brush point 其中 string为要绘制的文字内容 font为字体工具 brush为画刷 point为起点坐标 绘制文字 例10 4在窗体上输出阴影文字效果 阴影效果是字体显示中时常使用的效果 其实质是将同一文本内容显示两遍 利用位置的相错和颜色的变化来实现 如图1 10 10中左图所示 以下代码将产生阴影文字效果 DimgAsGraphicsg Me CreateGraphicsDimfAsNewFont 宋体 50 FontStyle Bold Dimsb1AsNewSolidBrush Color Black 构造单色画刷sb1Dimsb2AsNewSolidBrush Color FromArgb 100 Color Black 构造单色画刷sb2g DrawString 阴影效果 f sb2 33 43 g DrawString 阴影效果 f sb1 30 40 10 4非规则窗体 窗体对象的Region属性可改变窗体外形 将Region属性设置成椭圆或其他形状 就可获得特殊形状窗体的效果 设置Region Nothing 可恢复窗体的原始形状 例10 5建立椭圆窗体和菱形窗体 非规则窗体 在窗体上添加PictureBox控件 并为其指定一张图片 设定其Dock属性为Fill 使图形框填充到整个窗体 设定SizeMode属性为Stretchimage 使图片能随图形框的大小而缩放 为了能得到特殊形状区域的轮廓线 使用GDI 的GraphicsPath对象 椭圆窗体 用窗体的宽与高控制椭圆大小 构造GraphicsPath对象gpDimgpAsGraphicsPath NewGraphicsPath 将椭圆轮廓线赋予gpgp AddEllipse NewRectangle 0 0 Me Width Me Height 设置Region属性Me Region NewRegion gp 菱形窗体 需要设置菱形4个角的坐标点Dimpoints 3 AsPointF 声明PointF数组对象Points 0 NewPointF 0 Me Height 2 Points 1 NewPointF Me Width 2 0 Points 2 NewPointF Me Width Me Height 2 Points 3 NewPointF Me Width 2 Me Height gp AddPolygon Points 将菱形轮廓线赋予gpMe Region NewRegion gp 设置Region属性 非规则窗体透明度 通过窗体对象的Opacity属性改变窗体的透明程度 代码 Me Opacity 值 就可获得某透明度的窗体效果 当Opacity属性值为1时 窗体不透明 当Opacity属性值为0 窗体完全透明 如果在时钟控件的Tick事件中改变Opacity属性值 就可实现窗体的淡入淡出效果 非规则窗体 Dimtext pathAsGraphicsPathDimtext regionAsRegionMe BackColor Color RedMe Width 600text path NewGraphicsPath FillMode Alternate text path AddString CSDN NewFontFamily TimesNewRoman FontStyl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论