文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 357
阅读 7
收藏 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
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
数据结构与算法-C语言篇7-链式存储结构之静态链表

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

香沙小熊
01/09
0
0
链表的C语言实现(含动态内存分配)

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

晨曦之光
2012/03/09
657
0
数据结构篇之链表1-链表的概念

近期为了面试做准备,复习了下关于链表的一些知识点,做个记录~ 首先何谓链表? 链式存储的线性表,简称链表。链表由多个链表元素组成,这些元素称为节点。结点之间通过逻辑连接,形成链式存...

青雨001
11/16
0
0
JAVA 基本功秘籍

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

JAVA群450936584
2017/12/08
0
0
Graphlab实现分析:图的存储一

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

谈吐鱼
2014/01/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

读取zookeeper上的dubbo注册信息

dubbo有自己的服务监听服务器,incubator-dubbo-ops-develop,github可以下载到,网上也有很多本地部署的例子,就想了下能不能自己监听dubbo的服务,于是写了如下代码。特别注意的是zookeep...

noob_chr
22分钟前
0
0
Java提高班(六)反射和动态代理(JDK Proxy和Cglib)

反射和动态代理放有一定的相关性,但单纯的说动态代理是由反射机制实现的,其实是不够全面不准确的,动态代理是一种功能行为,而它的实现方法有很多。要怎么理解以上这句话,请看下文。 一、...

王磊的博客
41分钟前
2
0
Ext grid 渲染

// 单元格字体颜色渲染function renderer_Meta_useStatus(value, cellmeta, record,rowIndex, columnIndex, store){ var color = ""; if("空闲"==value){ color = "green";......

MoksMo
51分钟前
5
0
log4j2在spring中的配置

<?xml version="1.0" encoding="UTF-8"?><!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--Configuration后面的status,这个用于设置l......

TonyTaotao
56分钟前
4
0
java 中间变量缓存机制(i++,++i)

public class Test { public static void main(String[] args) { int i = 0; i = i ++ ; System.out.println(i); } } 答案是 0 如果是 i = ++......

shzwork
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部