Form.Canvas.Handle值居然是变化的!?

dqlihb 2009-01-02 02:10:58
在类中有TCanvas成员,
如果将其Handle=窗体中的Handle(Fomr1.Canvas.Handle),那么类中的画图操作都应当在窗体上
可是这个handle的是变化的?导致图形不能显示或不能正确显示,



有什么方法可以实现用窗体的参数给类成员赋值在窗体上画图呢?
...全文
82 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
starluck 2009-01-02
  • 打赏
  • 举报
回复

procedure TCanvas.RequiredState(ReqState: TCanvasState);
var
NeededState: TCanvasState;
begin
NeededState := ReqState - State;
if NeededState <> [] then
begin
if csHandleValid in NeededState then
begin
CreateHandle; //HANDLE是每次GETCAVASHANDLE時分配的。
if FHandle = 0 then
raise EInvalidOperation.CreateRes({$IFNDEF CLR}@{$ENDIF}SNoCanvasHandle);
end;
if csFontValid in NeededState then CreateFont;
if csPenValid in NeededState then CreatePen;
if csBrushValid in NeededState then CreateBrush;
State := State + NeededState;
end;
end;



為什麼不直接使用 form1.canvs.handle 來柄來畫呢?

你也可翠聲明一個類成員變量,通過屬性每次使用時獲得 form1.canvas.handle

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧