怎么填充指定区域?

Fantasiazhang 2002-11-15 11:28:39
怎样才能用某种颜色来填充指定的矩形区域呢?
...全文
211 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hansion3406 2002-11-16
  • 打赏
  • 举报
回复
转自HUBDOG的做品..
----Delphi为用户提供了一个方便的绘图环境,即某些控件的CANVAS属性(画布)。用户可以把某些控件的表面作为一张画布,在上面绘制各种图形或显示图像,但在CANVAS的使用过程中少不了一个特殊对象,那就是矩形RECT,灵活使用它会完成很多特殊的功能,为Delphi编制的Windows程序增加活力。

RECT的特点
----RECT既是一个特殊的数据结构,又是一个函数,它的作用就是定义一个矩形区域对象,而作为函数使用时它可以用两个属性(Tpiont型)指明区域范围,同时也可分解成四个单一的变量类型(Integer型),即:

topleft:左上角坐标(Tpiont型变量);
bottomright:右下角坐标(Tpiont型变量);
topleft.x或left:左上角横坐标;
topleft.y或top:左上角纵坐标;
bottomright.x或right:右下角横坐标;
bottomright.y或bottom:右下角纵坐标。
----例如,下面三种方法定义一个相同的RECT变量:

  Rect(10,10,110,210);
  topleft:=Piont(10,10);
bottomright:=Point(110,210);
  left:=10;top:=10;right:=110;Bottom:=210;
----下面的代码在Form1窗体上定义一个RECT矩形并用红色填充:

   var
    NewRect: TRect;
   begin
   
    NewRect := Rect(20, 30, 50, 90);
    Form1.Canvas.Brush.Color := clRed;
    Form1.Canvas.FillRect(NewRect);
  end;
----从上面可以看出,RECT只是一个通用变量,它并不属于任何控件本身,定义之后可由任何具有CANVAS属性的控件使用,以指明某控件表面的一个矩形区域,并且程序运行过程中可随意修改尺寸和位置。

RECT操作命令
Rect(x1,y1,x2,y2):定义Rect区域范围。
FillRect(rect:Trect):用填充色填充Rect区域。
FloodFill:用填充色填充Rect之外区域。
textrect(Rect:TRect;X,Y:Integer;constText:string):在Rect对象中显示文本,其中的X、Y为显示文本的坐标值,是相对于画布的坐标而不是相对于RECT的坐标;const为显示的字符个数;string为待显示的字符串,只有在RECT内的字符才能显示出来,超出部分不显示。
stretchdraw(constRect:TRect;Graphic:TGraphic):把图像文件填充到Rect之中,并且图像按RECT的尺寸自动伸缩,其中的Graphic可为BMP或ICO等图像资源。
font.size:定义画布上显示文字的尺寸。
font.color:定义画布上显示文字的颜色。
textwidth:返回字符串的长度。
textheight:返回字符串的高度。
Brush.Color:定义画布的填充颜色。
Copyrect(Dest:TRect;Canvas:Tcanvas;Source:TRect):把图像从一个矩形中拷到另一个矩形之中,并且按目标矩形尺寸自动伸缩,其中,Dest为目标画布矩形,Canvas为源画布,Source为源矩形。
----由于上述命令均是基于画布本身使用的,所以具体使用时必须加上控件及画面属性,例如下面的代码:

   var
    TheRect: TRect;
   begin
    TheRect.Top := 10;
    TheRect.Left := 10;
    TheRect.Bottom := 100;
    TheRect.Right := 100;
  Form1.Canvas.TextRect(TheRect,0,0,'Hello,
world!');
  end;

aaronwou 2002-11-15
  • 打赏
  • 举报
回复
用API函数,FillRect(),参数见Delphi自带的Win32帮助
课程简介    随着”新基建“的推行,其中涉及到的工业互联网、物联网、人工智能、云计算、区块链,无一不是与安全相关,所有数据的存储、传输、签名认证都涉及到密码学技术,所以在这样的大环境下再结合我多年安全开发经验,设计出这门课程。    因为密码学技术在新基建中的重要性,所以使其成为底层开发人员所必备的技能。特别是现在的区块链技术是全面应用密码学,大数据技术和人工智能技术也要解决隐私安全问题。所以现在学习相关技术是非常必要的技术储备,并且可以改造现有的系统,提升其安全性。课程学习目标了解DES算法原理VS2019创建C++项目,并导入openssl库学会OpenSSL DES算法加解密接口加密文件并做PKCS7 Padding 数据填充解密数据并做数据填充解析课程特点    面向工程应用    市面上的一些密码学课程和密码学的书籍,很多都是从考证出发,讲解算法原理并不面向工程应用,而我们现在缺少的是工程应用相关的知识,本课程从工程应用出发,每种技术都主要讲解其在工程中的使用,并演示工程应用的代码。    从零实现部分算法    课程中实现了base16编解码 ,XOR对称加解密算法,PKCS7 pading数据填充算法,通过对一些简单算法的实现,从而加深对密码学的理解。    理论与实践结合    课程如果只是讲代码,同学并不能理解接口背后的原理,在项目设计中就会留下隐患,出现错误也不容易排查出问题。    如果只讲理论,比如对密码学的一些研究,对于大部分从事工程应用的同学并没有必要,而是理论与实践结合,一切为了工程实践。    代码现场打出    代码不放在ppt而是现场打出,更好的让学员理解代码编写的逻辑,老师现场敲出代码正是展示出了工程项目的思考,每个步骤为什么要这么做,考虑了哪些异常,    易学不枯燥    课程为了确保大部分人开发者都学得会,理解算法原理(才能真正理解算法特性),学会工程应用(接口调用,但不局限接口调用,理解接口背后的机制,并能解决工程中会出现的问题),阅读算法源码但不实现密码算法,,并能将密码学投入到实际工程中,如果是想学习具体的加密算法实现,请关注我后面的课程。课程用到的技术    课程主要演示基于 VS2019 C++,部分演示基于ubuntu 18.04 GCC makefile    如果没有装linux系统,对本课程的学习也没有影响    课程中的OpenSSL基于最新的3.0版本,如果是openss 1.1.1版本也支持,再低的版本不支持国密算法。 课程常见问题课程讲解用的什么平台和工具?    课程演示主要在windows,基于VS2019 ,一些项目会移植到Linux在ubuntu18.04上我不会Linux能否学习本门课程?    可以的,课程主要在Windows上,Linux部分只是移植,可以暂时跳过,熟悉了Linux再过来看我不会C/C++ 语言是否能学习本门课程?    至少要会C语言,C++特性用得不多,但做了一个封装,可以预习一些C++基础。会不会讲算法实现,会不会太难学不会?    课程偏工程应用,具体的AES,椭圆曲线、RSA等算法只通过图示讲原理,一些简单hash算法会读一些源码,并不去实现,课程中会单独实现简洁的XOR对称加密和base16算法(代码量不大易懂)。其他的应用我们都基于OpenSSL3.0的SDK调用算法。课程提供源码和PPT吗?    课程中所有讲解的源码都提供,课程的上课的ppt也提供,PPT提供pdf版,只可以用于学习,不得商用,代码可以用于商用软件项目,涉及到开源系统部分,需要遵守开源的协议,但不得用于网络教学。要观看全部内容请点击c++实战区块链核心密码学-基于opensslhttps://edu.csdn.net/course/play/29593

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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