TCanvas

TCanvas为作图对象提供一个抽象的画布。

类关系 TObject->TPersistent

对那些作图对象,可使用TCanvas对象作为画布。标准的window控件,例如编辑控件和列表框控件,当它们被Windows画出来时,并不需要一块画布。在创建一幅图像时,TCanvas对象提供有用的属性、方法和事件,主要通过以下方法:

指定需要使用的刷子、画笔和字体类型。

对各类形状和线条进行作图和填充。

输入文体。

对图像进行着色。

对当前图像的变化能作出反应。

TCanvas有两个子类,即TControlCanvas和TMetafileCanvas,它们对控件图像的作图和创建对象的图元文件图像有所帮助。

属性列表

Brush 决定画布填充图形的背景颜色和填充图案的模式

ClipRect 指定剪贴矩形的边界

CopyMode 确定如何将复制的图像放到画布上面

Font 指定使用文体的字体

Handle 是针对画布的Windows GDI句柄

LockCount 表示画布被锁定的次数

Pen 指定使用的画笔种类

PenPos 指定画笔当前的作图位置

Pixels 指定当前ClipRect中点的颜色

方法列表

~TCanvas 释放TCanvas占用的内存

Arc 在图片上画出一段弧线

BrushCopy 制位图的一部分到位于画布上的矩形中

Chord 画一个由一条直线和一个椭圆相交所的的闭合图形

CopyRect 将另一画布上图形的一部分复制到这个画布上

Draw 在画布上输出由Graphic参数指定的图像

DrawFocusRect 画一个矩形框表示矩形内的控件对象具有输入焦点

Ellipse 在画布上画椭圆

FillRect 使用当前刷子填充画布上指定的矩形

FloodFill 使用当前刷子填充画布上的一块区域

FraneRect 画出一个矩形的边框

LineTo 在画布上画一条从当前画笔位置到指定点(x, y)的直线

Lock 使其他线条不在画布上画出

MoveTo 使当前作图位置移到点(x, y)

Pie 在画布上画一个扇形

PolyBezier 画一簇Bezier曲线

PolyBezierTo 画一簇Bezier曲线并更新PenPos的值

Polygon 在画布上画出闭合图形

Polyine 在画布上画出一系列链接点数组中的每一个点的直线

Rectangle 在画布上画出一个矩形

Refresh 从设备场境里删除 Pen、Brush 以及 Font

RoundRect 在画布上画出一园角的矩形

StretchDraw 画出由 raphic 参数指定的图像

TCanvas 创建一介 TCanvas 对象的实例

TextExtent 返回字符串的像素宽度和高度

TextHeight 返回字符串的像素高度

TextOut 在画布上从点(x,y)处开始输出一字符串

TextRect 在剪切矩形区内输出字符串

TextWidth 返回字符串的像素宽度

TryLock 调用TryLock 将锁定画布

Unlock 使LockCount 属性值减少

时间: 2024-10-02 00:55:38

TCanvas的相关文章

移动前端—图片压缩上传实践

 此前有同事跟我聊过关于移动端用canvas压缩图片后再上传的功能,最近有了点空闲时间,所以就实践了一下.demo效果链接在文章底部贴出. 在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上传显然不是一个好办法. 目前来说,HTML5的各种新API都在移动端的webkit上得到了较好的 实现.根据查看caniuse,本demo里使用到的FileRe

研究心得------->Seskin控件包中SeskinEdit汉字问题的解决办法

汉字|解决|控件|问题|心得 公司采用Seskin控件包来开发.却发现SeskinEdit在使用汉字是有问题.主要是由汉字时光标定位不准.鼠标选字也选不准.于是看了其代码.发现它在计算文本长度时采用的函数TextLength有问题.其实TCanvas提供了一个TextLength方法,在去文本长度时汉字没有问题.所以把这里替换下来就行了.替换后的se_controls单元中的TSeCustomEdit的代码如下 TSeCustomEdit = class(TSeCustomControl) pr

教你在Delphi程序中使用动态图标

在应用程序的编写中,组合框(ComboBox).列表框(ListBox).等常见的部件,通常不仅要用于显示文字,而且还要显示其与文字相关的图标.在一般的Windows应用程序中,这些图标的显示都要随列出的显示文本的变化而变化,例如在组合框中列出当前目录下的所有文件时,在组合框左边就显示与文件名相关联的图标,这就是所谓的动态图标.在Delphi中使用动态图标的步骤如下: 一.图标的获取 要使用动态图标,首先要解决的是如何获得显示文本和与其相关联的图标句柄.该图标通过文件关联由系统注册表决定,并且在

Delphi TTreeView学习(一)

需要了解的属性: AutoExpand property AutoExpand: Boolean; Set AutoExpand to true to cause the selected item to expand and the unselected items to collapse. BorderStyle property BorderStyle: TBorderStyleTBorderStyle; Set BorderStyle to specify whether the tre

Delphi的绘图功能[14]

Delphi 的 Graphic 单元有五个重要的图像类: TGraphic.TBitmap.TMetafile.TIcon.TPicture. TBitmap 用来操作位图; TMetafile 用来操作图元文件; TIcon 用来操作图标(包括鼠标指针)文件; TBitmap.TMetafile.TIcon 都是 TGraphic 的子类, 由于 TCanvas.Draw(X, Y: Integer; Graphic: TGraphic); 的第三个参数就是 TGraphic 类型, 所以它

Delphi的绘图功能[5]

在窗体上添加 Panel1.PaintBox1 和 Button1, 代码如下: procedure TForm1.Button1Click(Sender: TObject); var cvs: TCanvas; begin {PaintBox1 就像窗体一样, 也有 Canvas 属性} PaintBox1.Canvas.Brush.Color := clRed; PaintBox1.Canvas.FillRect(PaintBox1.ClientRect); {像 Panel1 这样没有 C

第五章-Delphi图形图像编程(一)(1)

在Delphi中,专门定义了一组对象和部件用以绘制图形,完成一些简单的图像功能.利用这些对象.部件的方法,可以方便地绘制各种常用图形:通过设置它们的属性,能得到不同风格的图形.另外,通过对鼠标事件的定义,可以方便的设计图形绘制程序. 本章将介绍以下内容: 1. TCanvas,TPen,TBrush,TColor对象的方法及属性: 2. 绘图功能的实现: 3. TImage,TPicture,TBitBtn,TBitmap部件的方法及属性: 4. 图像观测及处理. Graphex.dpr是一个简

第六章-文件管理(三)(1)

2.画出每个自画项目 这在TabSet的OnDrawTab事件处理过程中完成.这一事件处理过程的参数中包含了待画项目索引.画板.待画区域.是否被选中等.这里我们只利用了前三个参数.事实上利用最后一个参数,我们可以对被选中的标签进行一些特殊的视觉效果处理.这一工作就留给读者自己去完成. procedure TFMForm.DriveTabSetDrawTab(Sender: TObject; TabCanvas: TCanvas; R: TRect; Index: Integer; Selecte

Delphi图像数据压缩事例

Borland公司推出的 RAD开发工具 Delphi 5.0作为 Windows平台上的主流开发工具,其可视化的开发环境和面向对象编程的强大功能已经吸引了无数的开发人员. 但是,一些程序员在实际的开发过程中却时常为对大量的数据进行压缩而伤透脑筋,不得不去查找一些高效的压缩算法或在网上查找第三方的控件来实现压缩.难道 Delphi本身没有提供这个功能吗?其实 Delphi的程序设计师早就考虑到了这一点,他们提供了 Zlib.pas和 Zlibconst.pas两个单元文件来解决数据压缩问题,实现