文档章节

分别使用静态数组与动态数组建立一个区域 - 回复 "老A123" 的问题

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 357
阅读 6
收藏 0
点赞 0
评论 0

问题来源: http://www.cnblogs.com/del/archive/2008/05/26/1207811.html#1475006

本例效果图:



代码文件:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{使用静态数组建立区域}
procedure TForm1.Button1Click(Sender: TObject);
var
  arr: array[0..3] of TPoint;
  rgn: HRGN;
  w,h: Integer;
begin
  w := ClientWidth;
  h := ClientHeight;
  arr[0] := Point(w div 2, 0);
  arr[1] := Point(w, h div 2);
  arr[2] := Point(w div 2, h);
  arr[3] := Point(0, h div 2);
  rgn := CreatePolygonRgn(arr, Length(arr), WINDING);

  {下面是描边和填充这个区域}
  Canvas.Brush.Color := clSilver;
  FrameRgn(Canvas.Handle, rgn, Canvas.Brush.Handle, 1, 1);

  Canvas.Brush.Style := bsCross;
  FillRgn(Canvas.Handle, rgn, Canvas.Brush.Handle);
end;

{使用动态数组建立区域}
procedure TForm1.Button2Click(Sender: TObject);
var
  arr: array of TPoint;
  rgn: HRGN;
  w,h: Integer;
begin
  SetLength(arr, 4);
  w := ClientWidth;
  h := ClientHeight;
  arr[0] := Point(w div 2, 0);
  arr[1] := Point(w, h div 2);
  arr[2] := Point(w div 2, h);
  arr[3] := Point(0, h div 2);
  rgn := CreatePolygonRgn(arr[0], Length(arr), WINDING); {第一个参数是数组的起点}

  {下面是描边和填充这个区域}
  Canvas.Brush.Color := clRed;
  FrameRgn(Canvas.Handle, rgn, Canvas.Brush.Handle, 1, 1);
  Canvas.Brush.Style := bsCross;
  FillRgn(Canvas.Handle, rgn, Canvas.Brush.Handle);
end;

end.

 
 
 
 
 

 

 

  

窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 175
  ClientWidth = 289
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 208
    Top = 113
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object Button2: TButton
    Left = 208
    Top = 144
    Width = 75
    Height = 25
    Caption = 'Button2'
    TabOrder = 1
    OnClick = Button2Click
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/03/12/1409708.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
链表的C语言实现(含动态内存分配)

链表的C语言实现(含动态内存分配) 上 链表的C语言实现之动态内存分配 一、为什么用动态内存分配 但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

数据结构与算法-C语言篇7-链式存储结构之静态链表

数据结构与算法-目录 前言    C语言具有指针能力,使得它可以非常容易地操作内存中的地址和数据,这比其他高级语言更加方便灵活。 后来的面向对象语言,如Java、C#等,虽不使用指针,但因为...

香沙小熊 ⋅ 01/09 ⋅ 0

JAVA 基本功秘籍

1. Java数组与内存控制一、Java数组初始化 Java数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。Java数组使用之前必须先对数组对象进行初始化,所谓初始化,就是为数组的所有元...

JAVA群450936584 ⋅ 2017/12/08 ⋅ 0

【JavaSE(二)】Java语法基础(下)

原文地址:https://www.cloudcrossing.xyz/post/34/ 1 方法 1.1 方法的概述 方法,简单的说就是完成特定功能的代码块(注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法)。 ...

苍云横渡 ⋅ 05/09 ⋅ 0

Graphlab实现分析:图的存储一

前一段时间参与了一个迭代计算平台的开发,对于内存计算和图计算产生了比较浓厚的兴趣,这期间也阅读了spark和pregel的相关论文,了解一下BSP模型,但总觉得看论文太抽象了,于是选择阅读gra...

谈吐鱼 ⋅ 2014/01/21 ⋅ 0

Java中堆内存和栈内存详解

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变...

Sheamus ⋅ 2015/01/26 ⋅ 0

Java中的堆(heap)、栈(stack)

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存。 栈空间的内存由系统自动分配,不需要手动管理内存。一般存放基本类型(或者叫内置类型)(char、byte、short、int、long、float、dou...

LYQ1990 ⋅ 2016/04/28 ⋅ 0

Java中堆内存与栈内存分配浅析

  Java把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java就在栈中为这个...

小木头的冬天 ⋅ 2015/09/03 ⋅ 0

Java中堆内存和栈内存详解

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变...

首席挤破奶 ⋅ 2014/05/27 ⋅ 0

Java中堆内存和栈内存详解

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变...

happy圈圈 ⋅ 2014/04/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 21分钟前 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 25分钟前 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 27分钟前 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 46分钟前 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 52分钟前 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 53分钟前 ⋅ 0

监控各项服务

比如有三个服务, 为了减少故障时间,增加监控任务,使用linux的 crontab 实现. 步骤: 1,每个服务写一个ping接口 监控如下内容: 1,HouseServer 是否正常运行,所以需要增加一个ping的接口 ; http...

黄威 ⋅ 57分钟前 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 57分钟前 ⋅ 0

nodejs __proto__跟prototype

前言 nodejs中完全没有class的这个概念,这点跟PHP,JAVA等面向对象的语言很不一样,没有class跟object的区分,那么nodejs是怎么样实现继承的呢? 对象 对象是由属性跟方法组成的一个东西,就...

Ai5tbb ⋅ 今天 ⋅ 0

Ubuntu16.04 PHP7.0 不能用MYSQLi方式连接MySQL5.7数据库

Q: Ubuntu16.04 PHP7.0 不能用MYSQLi方式连接MySQL5.7数据库 A: 执行以下2条命令解决: apt-get install php-mysql service apache2 restart php -m 执行后会多以下4个模块: mysqli mysqlnd...

SamXIAO ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部