Delphi TGraphicControl 类 And TWinControl 类

本文详细介绍了Delphi中TGraphicControl和TWinControl的区别与联系,TGraphicControl主要用于图形图像显示,拥有内置的TCanvas属性,而TWinControl则是窗口组件,其Canvas属性在TCustomControl中提供。文章探讨了这两类组件的构造、Canvas属性的实现,以及如何利用Canvas进行绘图和窗口重绘。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.TGraphicControl/TcustomControl 与画布(Canvas)
    VCL中,TCotnrol之下的组件分两条路各行其道。

    一条为图形组件,这类组件并非窗口,职责只在于显示图形、图像,其基类是TGraphicControl;

    另一条为窗口组件,这类组件本身是一个Windows窗口(有窗口句柄),其基类是TWinControl。
    TGraphicControl作为显示图形、图像的组件分支,从其开始就提供了一个TCanvas类型的Canvas属性,以便在组件上绘制图形、显示图像
    对于窗口组件的分支,TWinControl并没有提供Canvas属性,而在其派生类TCustomControl才开始提供Canvas属性。

                       控件类分支
    TGraphicControl与TCustomControl的实现都在Controls.pas单元中,它们的声明看上去也是如此相似:

TGraphicControl = class(TControl)
private
    FCanvas: TCanvas;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
protected
    procedure Paint; virtual;
    property Canvas: TCanvas read FCanvas;
public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
end;

TCustomControl = class(TWinControl)
private
    FCanvas: TCanvas;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
protected
    procedure Paint; virtual;
    procedure PaintWindow(DC: HDC); override;
    property Canvas: TCanvas read FCanvas;
public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
end;
       它们提供了Canvas属性,只不过此时Ca

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值