⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtccw04.html

📁 对于学习很有帮助
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<html>
<head>
   <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
   <meta NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (Win95; I) [Netscape]">
   
   <title>计算机世界周报订阅</title>
</head>
<body TEXT="#000000" BGCOLOR="#FFFFFF">
<p>&nbsp;
<center>
<h2>
<font COLOR="#0000FF">DELPHI 中 画 布 应 用 技 巧&nbsp;</font></h2></center>

<center>
<h3>
辽 宁 省 铁 岭 市 气 象 局&nbsp;&nbsp;&nbsp;&nbsp; 李 莹&nbsp;</h3></center>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在DELPHI 为 编 程 者 提
供 了 一 个 灵 活 的 绘 图 场 所, 即 本 文 所 述 的CANVAS 类, 在DELPHI
中 的 很 多 控 件 都 具 有 此 属 性, 使 编 程 者 可 以 在 这 些 的 控 件
的 表 面 随 心 所 欲 的 绘 图, 这 对 完 善 用 户 界 面 或 者 制 作 一 些
屏 幕 特 技 都 有 着 非 凡 的 作 用, 下 面 举 例 说 明 几 种 特 殊 屏 幕
效 果 的 形 成 过 程。&nbsp;
<h3>
一、VANVAS 必 备 基 本 知 识:&nbsp;</h3>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 具 有CANVAS 属 性 的
控 件:&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TBitmap ,TComboBox
,TDBComboBox ,TDBGrid ,TDBListBox ,TDirectoryListBox ,TDrawGrid ,TFileListBox
,TForm ,THeaderControl ,TImage ,TListBox ,TOutline ,TPaintBox ,TPrinter
,TStatusBar ,TStringGrid 等 ,&nbsp;

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.CANVAS 属 性 及 命
令: 篇 幅 所 限, 省 略 参 数 及 格 式 说 明, 具 体 请 参 考 文 后 程 序
及DELPHI 帮 助 文 件:&nbsp;
<pre>
&nbsp;canvas.rectangle(): 画 矩 形&nbsp;&nbsp;&nbsp;&nbsp; pen.color: 定 义 画 笔 颜 色

&nbsp;roundrect(): 画 圆 角 矩 形&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pen.width: 定 义 画 笔 宽 度

&nbsp;arc(): 画 弧 线( 不 填 充)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; brush.color: 定 义 填 充 颜 色

&nbsp;chord(): 画 弧 线( 填 充)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textout(): 在 固 定 位 置 输 出 字 符 串

&nbsp;pie: 画 扇 形&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textwidth: 取 字 符 串 高 度

&nbsp;polygon(): 画 多 边 形 填 充&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textheight: 取 字 符 串 宽 度

&nbsp;polyline(): 多 点 连 线( 不 填 充)&nbsp;&nbsp; font.color: 指 定 字 体 颜 色

&nbsp;Pixels(): 指 定 固 定 象 素 点 颜 色 值 font.size: 指 定 字 体 大 小

&nbsp;moveto(): 指 明 画 线 起 点&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ellipse(): 画 圆 或 椭 圆

&nbsp;lineto(): 指 明 画 线 终 点</pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. 使 用CANVAS 注 意 事
项: 当 窗 口 进 行 重 画 时, 画 布 上 的 图 像 将 消 失, 比 如 当 窗 口
进 行 最 小 化 又 重 新 恢 复 时, 就 会 引 起 画 布 上 图 像 的 消 失,
另 外 当 刚 刚 运 行 程 序 时, 窗 口 也 是 属 于 重 新 绘 制, 所 以 如
果 在 绘 制 窗 口 之 前 在 画 布 上 绘 图, 弹 出 窗 口 后 将 不 能 显
示 出 图 像, 比 如 在TForm1.FormCreate() 事 件 中 进 行 画 布 绘 图 操
作 将 是 徒 劳 的, 但 可 以 在 此 事 件 中 进 行 画 布 操 作 的 准 备
工 作, 比 如 设 置 画 笔 的 颜 色 和 宽 度 等。&nbsp;
<h3>
二、CANCAS 应 用 举 例:&nbsp;</h3>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 为 控 件 增 加 阴 影
或 投 影 效 果: 基 本 原 理 就 是 在 利 用 该 控 件 的 父 控 件 比 如FORM
或 者 其 它 容 器 控 件 的CANVAS, 在 需 要 修 饰 的 控 件 周 围 适 当 处
填 加 图 像, 通 过 线 条 及 颜 色 的 合 理 达 配, 使 控 件 与 周 围 的
图 像 融 为 一 体, 形 成 特 殊 的 视 觉 效 果, 具 体 操 作 时 需 要 根
据 被 修 饰 控 件 的TOP、LEFT、WIDTH、HEIGHT 等 属 性, 确 定 需 要 画
线 的 起 点 和 终 点 坐 标, 这 样 操 作 无 论 被 修 饰 控 件 位 置 及
尺 寸 如 何 变 化, 都 可 以 保 证 投 影 及 阴 影 效 果 完 美 的 实 现;
比 如 可 在 窗 口 中 建 立 三 个 按 钮, 然 后 在 按 钮2 和 按 钮3 的CLICK
事 件 中 填 加 如 下 代 码, 之 后 按 下 按 钮2 或 按 钮3 即 使 按 钮1 形
成 投 影 和 阴 影 效 果:&nbsp;
<pre>
procedure TForm1.Button2Click(Sender: TObject);

var

x,y,i:integer;

begin

x:=0;y:=0;

form1.canvas.pen.width:=1;

for i:=0 to 8 do

begin

form1.canvas.pen.color:=$00a0a0a0;

form1.canvas.moveto(Button1.left+Button1.width+x,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.top+y);

form1.canvas.lineto(Button1.left+Button1.width+x,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.top+button1.height+y);

form1.canvas.pen.color:=$00606060;

form1.canvas.moveto(Button1.left+x,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.top+Button1.height+y);

form1.canvas.lineto(Button1.left+Button1.width+x,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.top+button1.height+y);

x:=x+1;

y:=y+1;

end;

end;



procedure TForm1.Button3Click(Sender: TObject);

var

x,y,i:integer;

begin

x:=0;y:=0;

form1.canvas.pen.width:=1;

for i:=0 to 8 do

begin

form1.canvas.pen.color:=$00404040;

form1.canvas.moveto(Button1.left+Button1.width+x,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.top+8);

form1.canvas.lineto(Button1.left+Button1.width+x,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.top+button1.height+8);

form1.canvas.moveto(Button1.left+8,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.top+Button1.height+y);

form1.canvas.lineto(Button1.left+Button1.width+8,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.top+button1.height+y);

x:=x+1;

y:=y+1;

end;

end;</pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 为 控 件 加 上 边 框:
DELPHI 中 有 很 多 控 件 无 边 框 属 性, 利 用CANVAS 可 以 为 任 意 的
控 件 填 加 边 框, 使 其 轮 廓 清 楚; 具 体 操 作 时, 可 先 定 义 出 画
笔 的 颜 色、 画 笔 的 宽 度( 边 框 宽 度), 之 后 用polyline() 命 令 根
据 相 应 控 件 的 位 置、 尺 寸 自 动 定 位 四 角 坐 标, 一 次 可 完 成
一 个 固 定 宽 度 矩 形 的 绘 制 工 作, 如 果 需 要 多 种 颜 色 或 者
具 有 立 体 效 果 的 边 框, 可 多 次 定 义 画 笔 颜 色, 画 出 连 续 的
多 个 矩 形, 通 过 调 整 相 邻 矩 形 的 颜 色 来 实 现 特 殊 效 果 的
边 框 绘 制 工 作; 比 如 在 窗 体 中 安 放 两 个 按 钮, 分 别 在MOUSEMOVE
事 件 中 填 加 如 下 代 码, 之 后 每 当 鼠 标 移 到 相 应 的 按 钮 上 时,
相 应 的 按 钮 就 会 出 现 特 殊 颜 色 的 边 框, 当 鼠 标 移 到 窗 口 空
白 处 时, 则 窗 口 会 出 现 明 显 的 边 线, 起 到 特 殊 的 提 示 效 果;&nbsp;
<pre>
procedure TForm1.Button1MouseMove

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

form1.repaint;

form1.Canvas.pen.color:=clGreen;

form1.Canvas.pen.width:=5;

form1.Canvas.polyline([point(Button1.left,Button1.top),

&nbsp;point(Button1.left+Button1.width,Button1.top),

&nbsp;point(Button1.left+Button1.width,Button1.top+Button1.height),

&nbsp;point(Button1.left,Button1.top+Button1.height),

&nbsp;point(Button1.left,Button1.top)]);

end;



procedure TForm1.Button2MouseMove

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Sender: TObject; Shift: TShiftState; X,

&nbsp; Y: Integer);

begin

form1.repaint;

form1.Canvas.pen.color:=clBlue;

form1.Canvas.pen.width:=5;

form1.Canvas.polyline([point(Button2.left,Button2.top),

&nbsp;point(Button2.left+Button2.width,Button2.top),

&nbsp;point(Button2.left+Button2.width,Button2.top+Button2.height),

&nbsp;point(Button2.left,Button2.top+Button2.height),

&nbsp;point(Button2.left,Button2.top)]);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -