文档章节

Delphi 的绘图功能[12] - TPen 类(下) : 学习橡皮线

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 286
阅读 2
收藏 0
//奇妙的异或运算, 就这些简单的代码, 反复点击按钮...

procedure TForm1.Button1Click(Sender: TObject);
begin
  Canvas.Pen.Color := clYellow; {指定笔颜色为黄色}
  Canvas.Pen.Width := 20;       {笔宽 20}
  Canvas.Pen.Mode := pmXor;     {指定画笔模式为: 画笔色与背景色的异或运算}

  {画线}
  Canvas.MoveTo(0,0);
  Canvas.LineTo(ClientWidth,ClientHeight);
end;

 
 
 
 
 

 

 

  
//效果图:

//做一个橡皮线的示例:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  x1,y1,x2,y2: Integer; {直线两个端点的坐标}
  f: Boolean;           {判断鼠标是否点下}


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  x1 := X; y1 := Y;
  x2 := X; y2 := Y;
  Canvas.Pen.Color := clRed;
  Canvas.Pen.Width := 2;
  Canvas.Pen.Mode := pmXor;
  f := True;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if f then
  begin
    {擦除}
    Canvas.MoveTo(x1, y1);
    Canvas.LineTo(x2, y2);

    x2 := X; y2 := y;

    {重绘}
    Canvas.MoveTo(x1, y1);
    Canvas.LineTo(x2, y2);
  end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if f then
  begin
    {画出确定的线}
    Canvas.Pen.Mode := pmCopy;
    Canvas.MoveTo(x1, y1);
    Canvas.LineTo(x2, y2);
    f := not f;
  end;
end;

end.

 
 
 
 
 

 

 

  
//效果图:


本文转载自:http://www.cnblogs.com/del/archive/2008/02/18/1072335.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
GO 语言 UI 组件库 - govcl

由于现有第三方的Go UI库不是太大就是用的不习惯,或者组件太少。就萌生了自己写一个UI库的想法Delphi(Lazarus)有些许多优秀的VCL(LCL)组件,不拿来使用太可惜了。所以就索性做了一套。目前支...

不在乎y
2017/10/10
6.9K
17
Delphi 使用 Duilib 库--Duilib for Delphi

导读 什么是Duilib for Delphi? Duilib for Delphi是一个基于C++Duilib的开源工程,主要致力于在Delphi中使用Duilib库构建漂亮的UI。 怎么学习?首先对Duilib有基本的了解,特别是XML构建的U...

不在乎y
2015/11/30
1K
0
支持.NET和移动设备的XLS读写控件XLSReadWriteII控件介绍

XLSReadWriteII 相关文章 在Delphi中使用XlsReadWrite xlsreadwriteII对excel进行读取操作的几点提示 解决 XLSReadWriteII 解析Excel95格式的文件乱码的问题 Excel读写方案XLSReadWriteII使用...

yidongkaifa
2014/06/04
0
0
基于DirectUI的SC设计规划的个人构想与目标

SC设计的目标: SC是一个简单的基于DirectUI的界面库。设计SC,主要是基于个人爱好与学习的目的。在本人学习C++的这几个月来,将一点点收获与理解。想通过设计SC来进行提升与巩固。是一个重复...

iSixther
2015/03/11
0
3
推荐Pascal-Delphi、软件工程;数据库开发 一些编程书

HTF 阅读器下载 IT技术 注意:下面的RAR文件名是网页链接,不RAR源文档,如果弹出下载软件,请单击右键打开新页面再下载。 Pascal-Delphi更新日期:2009-12-514:45:59 总数:12 订阅RSS 《D...

jfyes
2009/12/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 识别慢性能的宏

Page Profiling 给你了有关页面在载入的时候操作缓慢的邪教,你可以将下面的内容添加到调试(debug)级别: Version 3.1 及其后续版本 设置包名字为 com.atlassian.renderer.v2.components.M...

honeymose
20分钟前
0
0
day93-20180920-英语流利阅读-待学习

时尚之觞:外表光鲜靓丽,其实穷得要命 Lala 2018-09-20 1.今日导读 讲到时尚界,我们脑海里浮现的可能都是模特和设计师光鲜靓丽、从容潇洒的模样。可是,最近在法国出版的一本书却颠覆了我们...

飞鱼说编程
35分钟前
0
0
maven的pom.xml用解决版本问题

maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个jar会被下载了不同版本的问题,好在pom的配置里面允许用<exclusion>来排除一些...

JAVA码猿
59分钟前
1
0
20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
64
11

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部