
delphi 画布.doc
8页delphidelphi 画布画布delphi 画布 Canvas 的使用一 画布 Canvas 的基本属性主要属性 主要子属性 含义Font 字体属性 Color 字体颜色Mode 字体类型Style 字体风格Pen 画笔属性 Color 画笔颜色Mode 画笔的工作方式Style 画笔的风格Width 画笔的宽度Brush 笔刷 Color 笔刷颜色,确定图形的背景颜色Style 笔刷风格,确定笔刷的填充图案CopyMode 拷贝模式 cmDstInvert 将目标图形反转cmMergeCopy 将目标图形与源图像进行“与“操作cmMergePaint 将源图像反转后再与目标图像进 行“或“操作cmNotSrcCopy 将源图像反转拷贝cmNotSrcErase 先将与目标图像进行“或“操作后再反转cmPatCopy 拷贝源图像的模式ClipRect 属性 剪切图形从而使它在矩形边界内Handle 句柄属性 把Canvas.Handle 传给一个 HDC 参数PenPos 画笔位置属性 给出画笔的位置Pixels 像素属性 担供了 Canvas 的各个像素的一个二维数组二 Canvas 对象的主要方法及其代表的含义如表所示方法 含义 语法Lineto 绘制直线 LineTo(x,y:Integer);MoveTo 指定画笔的位置Rectangle 矩形 在画布 Canvas 上绘制矩形ELliPse 圆 在画布 Canvas 上绘制圆和椭圆Arc 弧 在椭圆上绘制一段弧Brushcopy 笔刷拷贝 把位图的一部分复制到画布的某个矩形区域,并用画布上的当前颜色替换位图的颜色Chord 弦 用来连接椭圆上的两点CopyRect 从源画布对象上复制部分图像到目标画布Draw 在画布给定的像素点坐标(x,y)处绘制Graphic 所指定的图像,该图像可以是位图,图标或元位图DrawFocuseRect 绘制一矩形以指示在此矩形内部的对象获得焦点Pie 扇形 绘制由椭圆的部分边界所确定的扇形图Polyline 多条线 在画布上用当前绘制笔绘制一系列的点,并将各点连接成线RoundRect 圆角矩形 在画布上绘制圆角矩形\StretchDraw 可缩放画 在 Rect 参数指定的矩形内绘制一图像,使图像以一定比例扩大或压缩Polygon 多边形 用此方法可以在 Tcanvas 对象上绘制多边形三 画简单图形,如线,矩形等.线条的话设置开始点,再 LineTo 到终点.矩形设置 4 个顶点(会成为封闭空间,设置 Brush 可以填充,画空框就用 LineTo 画 4 条线).所以图形的绘制可以想象现实中画该图的步骤,设置相应参数,执行相应动作就可以了.四 显示出复杂图形可以先将图象读到临时的图片控件中,完成制成再拷贝到当前要显示的地方.例子:(在图片上画外械,ALPHA 透明效果){重画右边图像}procedure TNavigationFrm.RepaintRightImg;varRectRight:TRect;RectSource:TRect;RightBmp: TBitmap;beginRightBmp := TBitmap.Create;try//规定临时存贮图片的大小RightBmp.Width := img_Right.width;RightBmp.Height := img_Right.Height;//装入图象RectRight := Rect(0,0,img_Right.width,img_Right.height);RectSource := Rect(img_Right.Left,img_Right.Top,img_Right.Left + img_Right.Width,img_Right.Top + img_Right.Height);RightBmp.Canvas.CopyRect(RectRight,bmp.Canvas,RectSource);//画矩形框RightBmp.Canvas.Pen.Width := 5;RightBmp.Canvas.Pen.Color := RGB(0,0,180);RightBmp.Canvas.Brush.Color := clWindow;RightBmp.Canvas.Brush.Style := bsSolid;RightBmp.Canvas.PenPos := Point(RightBmp.Canvas.Pen.Width div 2,10 + RightBmp.Canvas.Pen.Width div 2);RightBmp.Canvas.LineTo(RightBmp.Width-10-RightBmp.Canvas.Pen.Width div 2,10 + RightBmp.Canvas.Pen.Width div 2);RightBmp.Canvas.LineTo(RightBmp.Width-10-RightBmp.Canvas.Pen.Width div 2,RightBmp.Height -10 - RightBmp.Canvas.Pen.Width div 2);RightBmp.Canvas.LineTo(RightBmp.Canvas.Pen.Width div 2,RightBmp.Height -10 - RightBmp.Canvas.Pen.Width div 2);RightBmp.Canvas.LineTo(RightBmp.Canvas.Pen.Width div 2,10 + RightBmp.Canvas.Pen.Width div 2);//用画刷画矩形RightBmp.Canvas.Rectangle(RightBmp.Canvas.Pen.Width div 2,10 + RightBmp.Canvas.Pen.Width div 2,RightBmp.Width-10-RightBmp.Canvas.Pen.Width div 2,RightBmp.Height -10 - RightBmp.Canvas.Pen.Width div 2);//混合透明效果 AlphaCopy(RightBmp.Canvas.Handle,0,0,img_Right.width,img_Right.height,bmp.Canvas.Handle,img_Right.Left,img_Right.Top,img_Right.Width,img_Right.Height,120);//最终图像成果拷贝给需显示的地方img_Right.Picture.Assign(RightBmp);finallyFreeAndNil(RightBmp);end;end;。





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






