Delphi 绘图TCanvas类[3] TPen类参数及介绍

Delphi 绘图TCanvas类[3]  TPen类参数及介绍
TPen 主要属性: Color、Width、StyleMode

//Style: 样式 TPenStyle,:
psSolid = 0;   {实线}
psDash = 1;   {段线; 要求笔宽<=1}
psDot = 2;     {点线; 要求笔宽<=1}
psDashDot = 3;     {线、点; 要求笔宽<=1}
psDashDotDot = 4;    {线、点、点; 要求笔宽<=1}
psClear = 5;     {不可见}
psInsideFrame = 6;   {实线; 但笔宽是向里扩展}
psUserStyle = 7;   {自定义, Delphi.Net 支持}
psAlternate = 8;   {交替, Delphi.Net 支持}
例如:

Canvas.Pen.Color := clRed;
Canvas.Pen.Style := psSolid ;
//或:Canvas.Pen.Style := TPenStyle(0);

//Mode: 画笔与背景的颜色,混合模式; TPenMode:
pmBlack   {总是黑色}
pmWhite   {总是白色}
pmNop    {画笔无效}
pmNot    {背景色取反}
pmCopy    {画笔设置的颜色}
pmNotCopy    {画笔颜色取反}
pmMergePenNot   {画笔颜色与背景颜色的反色的组合}
pmMaskPenNot   {画笔颜色与背景公共色的反色的组合}
pmMergeNotPen   {画笔颜色取反后与背景颜色的组合}
pmMaskNotPen    {画笔的反色与背景的公共色的组合}
pmMerge   {画笔颜色与背景颜色的组合}
pmNotMerge {pmMerge 的反色}
pmMask   {画笔与背景公共颜色的组合}
pmNotMask    {pmMask 的反色}
pmXor   {画笔颜色与背景颜色的 Xor 组合}
pmNotXor    {pmXor 的反色}
例如:

Canvas.Pen.Mode := pmBlack;
//或:Canvas.Pen.Mode := TPenMode(0);

  

创建时间:2020.02,01  更新时间:

原文地址:https://www.cnblogs.com/guorongtao/p/12250354.html

时间: 2024-10-12 10:14:48

Delphi 绘图TCanvas类[3] TPen类参数及介绍的相关文章

Delphi 实现多线程编程的线程类 TThread

http://blog.csdn.net/henreash/article/details/3183119 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到, 但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了. 然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充. 线程本质上是进程中一段并发运行的代码. 一个进程至少有一个线程,即所谓的主线程. 同时还可以有多个

类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器

 1.第一个最简单的类模板案例 #include "mainwindow.h" #include <QApplication> #include <QPushButton> #include <QLabel> template<class T> class run { public: T w; void show() { w.show(); } void settext() { w.setText("A"); }

编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数。定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类。Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分;School 中计算平均分的方法是所有科目的分数之和除以总科目数。 要求:定义ComputerAv

题目: 编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数. 定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类. Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分: School 中计算平均分的方法是所有科目的分数之和除以总科目数. 要求:定义ComputerAverage的对象为上转型对象,并调用重写的方法averge. 题目用到:1.方法的多态

各种DTO类最好有 无参数的构造方法

以一下这个类为例 @Getter @Setter @ToString class Person { private String s; public Person(String s) { this.s = s;} } 这个Person类,是无法通过 new Person();和Person.class.newInstance();实例化的. 在一部分反序列化工具类中,这个类作为泛型的时候会报错,如下所示 这里会出现java.lang.NoSuchMethodException 给Person类追

JAVA正则表达式:Pattern类与Matcher类详解(转)

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作

JAVA API(一)String类和StringBuffer类

1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号""之内,如"abc".在Java中定义了String和StringBuffer类来封装字符串,并提供了一系列操作字符串的方法,它们都位于java.lang包中,因此不需要导包就可以直接使用.下面将对String类和StringBuffer类详细讲解. 1.1String类的初始

Spring容器装饰者模式应用之实现业务类与服务类自由组合的解决方案

在任何一个项目中都不可或缺的存在两种bean,一种是实现系统核心功能的bean,我们称之为业务类,另外一种是与系统核心业务无关但同时又提供十分重要服务bean,我们称之为服务类.业务类的bean根据每个系统自身核心功能的不同可以有任意多个,但是服务类的种类在各个系统之间的差异却并不是很大.在系统中经常用到的服务有以下几种,权限服务,日志服务,缓存服务,事务服务以及预警服务等.在整个系统的不断进化过程中,服务类与业务类的关系也不断的发生着变化,由当初垂直模式变为横切模式,这也是编程思想不断演化过程

C#的线程类之Thread类以及对为什么设置线程优先级却不先执行这一问题本身的认识

1.C#对线程进行操作时,通过Thread类,可以对线程进行创建.挂起.恢复.休眠.终止及设置优先级. Thread类位于System.Threading命名空间下,该命名空间还包含一个ThreadPool类(允许用户使用系统提供的线程池)和一个Timer类(在线程池上执行回调方法) 在线程运行期间,不同的时刻会表现为不同的状态,但它总是处于由ThreadState定义的一个或多个状态中.用户可以通过使用ThreadPriority枚举为线程定义优先级,但不能保证操系统会接收该优先级 2.Thr

新式类 VS 经典类

一.概述 Python中支持多继承,也就是一个子类可以继承多个父类/基类.当一个调用一个自身没有定义的属性时,它是按照何种顺序去父类中寻找的呢?尤其是当众多父类中都包含有同名的属性,这就涉及到新式类 和 经典类的区别. 二.多继承 1 class Food(object): 2 3 def __init__(self, name, color): 4 self.name = name 5 self.color = color 6 7 def eatable(self): 8 print("%s