随笔 - 2146  文章 - 19 评论 - 11846 阅读 - 1267万

03 2011 档案
Direct2D (5) : 绘制自定义图形
摘要:下面是通过自定义函数绘制菱形的测试代码。uses Direct2D, D2D1;{自定义的绘制菱形的函数}function GetDiamondPath(ptLeft, ptTop: TD2DPoint2f): ID2D1PathGeometry; //返回路径接口var sink: ID2D1GeometrySink; //给路径添加图形的接口 ptRight,ptBottom: TD2DPoint2f;begin {算出另外两个点} ptRight := D2D1PointF((ptTop.x-ptLeft.x)*2+ptLeft.x, ptLeft.y); ptBottom := D2D 阅读全文
posted @ 2011-03-31 21:09 万一 阅读(2350) 评论(0) 推荐(0) 编辑
Direct2D (4) : DrawGeometry() 与 FillGeometry()
摘要:原始的 Direct2D 只提供了几种简单图形(直线、矩形、圆角矩形、椭圆)的绘制与填充,更多集合图形或路径的描绘要使用 DrawGeometry() 和 FillGeometry()。既然能绘制更复杂的图形,当然也能绘制基本图形,先试下使用 DrawGeometry()、FillGeometry() 实现矩形、圆角矩形和椭圆。方法的参数是 ID2D1Geometry 接口,ID2D1RectangleGeometry、ID2D1RoundedRectangleGeometry、ID2D1EllipseGeometry 都是它的子接口。ID2D1Factory 提供了实现这三个接口的方法,从 阅读全文
posted @ 2011-03-31 17:42 万一 阅读(3414) 评论(0) 推荐(0) 编辑
Direct2D (3) : 使用浮点参数绘制基本图形
摘要:{相关方法}TDirect2DCanvas.DrawEllipse();TDirect2DCanvas.DrawLine();TDirect2DCanvas.DrawRectangle();TDirect2DCanvas.DrawRoundedRectangle();TDirect2DCanvas.FillEllipse();TDirect2DCanvas.FillRectangle();TDirect2DCanvas.FillRoundedRectangle();{相关结构}TD2DPoint2f (或 D2D_POINT_2F) //浮点点结构; 构建函数 D2D1PointF(); 可从 阅读全文
posted @ 2011-03-31 14:01 万一 阅读(2820) 评论(1) 推荐(0) 编辑
Direct2D (2) : 基本图形命令测试
摘要:代码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, TypInfo, Direct2D;type TForm1 = class(TForm) ListBox1: TListBox; Panel1: TPanel; GroupBox1: TGroupBox; CheckBox1: TCheckBox; Edit1: TEdit; UpDown1: TUpDown; C 阅读全文
posted @ 2011-03-30 23:42 万一 阅读(3572) 评论(1) 推荐(0) 编辑
Direct2D (1) : 第一个例子
摘要:应该是 Delphi 2009 就支持 Direct2D 了,但那时我还用着 WinXP 系统(不支持);现在的测试环境是 Win7+DelphiXE。Direct2D 属 DirectX 家族,是 GDI、GDI+ 的继任者,支持硬件加速,并能与 GDI、GDI+、D3D 交互。其它初步的印象是其文本处理和图像处理分别使用了 DirectWrite 和 WIC 技术,还有支持图层。相关单元是 Direct2D.pas 和 D2D1.pas。Direct2D.pas 中是 Delphi 对 Direct2D 的简单实现,需要其更多功能时还应从 D2D1.pas 中挖掘。Direct2D.pas 阅读全文
posted @ 2011-03-30 11:59 万一 阅读(5895) 评论(2) 推荐(2) 编辑
枚举可以这样遍历
摘要:uses TypInfo;{以 TAlign 为例}procedure TForm1.Button1Click(Sender: TObject);var enum: TAlign; i: Integer; str: string;begin Memo1.Clear; for enum := Low(TAlign) to High(TAlign) do begin i := ord(enum); //Integer(enum) str := GetEnumName(TypeInfo(TAlign), i); Memo1.Lines.Add(Format('%d : %s', [i 阅读全文
posted @ 2011-03-29 16:39 万一 阅读(3605) 评论(0) 推荐(0) 编辑
官方的正则表达式组件 RegularExpressions (5) : 强测试
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); end;var Form1: TForm1;implementation{$R *.dfm}uses RegularExpressions, msxml;const 阅读全文
posted @ 2011-03-29 13:27 万一 阅读(4873) 评论(3) 推荐(0) 编辑
官方的正则表达式组件 RegularExpressions (4) : 表达式选项
摘要:TRegExOption = ( roNone, //无 roIgnoreCase, //不区分大小写 roMultiLine, //多行模式; 可使 ^ 和 $ 匹配每个行首或行尾 roExplicitCapture, //只捕获指定了名称或编号的子表达式 roCompiled, //预编译表达式; 这在反复使用更有效率 roSingleLine, //单行模式; 使 . 也可匹配换行符 roIgnorePatternSpace //忽略注释和未经转义的空白);uses RegularExpressions;{roIgnoreCase}procedure TForm1.Button1Clic 阅读全文
posted @ 2011-03-29 10:05 万一 阅读(6017) 评论(4) 推荐(1) 编辑
官方的正则表达式组件 RegularExpressions (3) : TMatchEvaluator
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, RegularExpressions;type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private function MyMatchEvaluator(const Match: TMatch): string 阅读全文
posted @ 2011-03-28 22:36 万一 阅读(3894) 评论(5) 推荐(1) 编辑
官方的正则表达式组件 RegularExpressions (2) : 子表达式
摘要:uses RegularExpressions;const pattern = '([A-Z]+)(\d+)'; //其三个子表达式分别是:[A-Z]+\d+ [A-Z]+ \d+ txt = 'AAA1 BBB2 AA11 BB22 A111 B222 AAAA'; //测试用的目标文本procedure TForm1.Button1Click(Sender: TObject);var match: TMatch; group: TGroup; groups: TGroupCollection;begin match := TRegEx.Match(txt, 阅读全文
posted @ 2011-03-28 21:42 万一 阅读(4666) 评论(0) 推荐(0) 编辑
官方的正则表达式组件 RegularExpressions (1) : 基本应用
摘要:刚刚试了一下 DelphiXE 新增的正则表达式组件, 它基于 C 语言编写的 PCRE 库实现, 感觉设计的非常好。其主要的 TRegEx 被设计为一个结构(而不是类), 可能是基于效率的考虑;不过它主要调用了 TPerlRegEx 类的功能。TRegEx 的五个主要方法 IsMatch()、Match()、Matches()、Replace()、Split() 都有相应的 class 方法,所以一般情况下根本不需要手动实例化对象,直接使用 class 方法就够了。另:关于表达式语法可参加 Perl 5 的相关介绍。uses RegularExpressions; //相关单元const p 阅读全文
posted @ 2011-03-28 20:55 万一 阅读(11070) 评论(4) 推荐(2) 编辑
NativeXml (12):NativeXmlObjectStorage
摘要:安装包中的 NativeXmlObjectStorage.pas 是 NativeXml 的扩展应用,可以把组件、对象和窗体序列化为 Xml 文件。其中方便使用的是两个类:TsdXmlObjectWriter、TsdXmlObjectReader,也可使用下面三组函数:ComponentCreateFromXmlFile();ComponentCreateFromXmlNode();ComponentCreateFromXmlStream();ComponentCreateFromXmlString();ComponentSaveToXmlFile();ComponentSaveToXmlNo 阅读全文
posted @ 2011-03-25 22:59 万一 阅读(4180) 评论(2) 推荐(0) 编辑
NativeXml (11):浮点数的有效位数
摘要:uses NativeXml; procedure TForm1.Button1Click(Sender: TObject); var xml: TNativeXml; fVal: Double; begin fVal := 123.456789; xml := TNativeXml.CreateName('List'); xml.XmlFormat := xfReadable; //xml.FloatSignificantDigits := ; with xml.Root.NodeNew('item') do begin WriteString('Na 阅读全文
posted @ 2011-03-25 21:21 万一 阅读(2985) 评论(0) 推荐(0) 编辑
NativeXml (10):编辑
摘要:uses NativeXml; var xml: TNativeXml; const xmlStr = '<?xml version="1.0" encoding="UTF-8"?>' + '<List>' + '<item ID="No.1" age="11">张三</item>' + '<item ID="No.2" age="22">李四</item 阅读全文
posted @ 2011-03-25 20:44 万一 阅读(4320) 评论(2) 推荐(0) 编辑
NativeXml (9):读取
摘要:var xml: TNativeXml; const xmlStr = '<?xml version="1.0" encoding="UTF-8"?>' + '<List>' + '<item ID="No.1" age="11">张三</item>' + '<item ID="No.2" age="22">李四</item>' + ' 阅读全文
posted @ 2011-03-25 17:05 万一 阅读(12404) 评论(2) 推荐(1) 编辑
NativeXml (8):其它添加
摘要:uses NativeXml;procedure TForm1.Button1Click(Sender: TObject);var xml: TNativeXml; node: TXmlNode;begin xml := TNativeXml.CreateName('List'); xml.XmlFormat := xfReadable; node := xml.NodeNewTextType('注释名称', '注释内容', xeComment); xml.Root.NodeAdd(node); node := xml.NodeNewTextTy 阅读全文
posted @ 2011-03-25 13:19 万一 阅读(4998) 评论(2) 推荐(1) 编辑
NativeXml (7):添加属性
摘要:uses NativeXml; procedure TForm1.Button1Click(Sender: TObject); var xml: TNativeXml; node: TXmlNode; begin xml := TNativeXml.CreateName('List'); xml.XmlFormat := xfReadable; node := xml.Root.NodeNew('item'); node.AttributeAdd('ID', '1'); node.AttributeAdd('age' 阅读全文
posted @ 2011-03-25 11:09 万一 阅读(4588) 评论(0) 推荐(1) 编辑
NativeXml (6):添加节点
摘要:uses NativeXml; procedure TForm1.Button1Click(Sender: TObject); var xml: TNativeXml; node: TXmlNode; begin xml := TNativeXml.CreateName('List'); xml.XmlFormat := xfReadable; // node := xml.Root.NodeNew('item'); node.Value := '张三'; // with xml.Root.NodeNew('item') do b 阅读全文
posted @ 2011-03-24 22:41 万一 阅读(5423) 评论(0) 推荐(0) 编辑
NativeXml (5):事件
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, NativeXml{!};type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private p 阅读全文
posted @ 2011-03-24 17:03 万一 阅读(4313) 评论(0) 推荐(0) 编辑
NativeXml (4):认识根节点
摘要:uses NativeXml;const xmlFile = 'C:\Temp\xml_test_files\basic.xml'; //测试文件var xml: TNativeXml;procedure TForm1.FormCreate(Sender: TObject);begin xml := TNativeXml.Create(nil); xml.LoadFromFile(xmlFile);end;{获取根节点的类名及类的继承关系}procedure TForm1.Button1Click(Sender: TObject);var str: string; myClas 阅读全文
posted @ 2011-03-24 16:01 万一 阅读(7607) 评论(14) 推荐(0) 编辑
NativeXml (3):保存
摘要:uses NativeXml;var xml: TNativeXml;procedure TForm1.FormCreate(Sender: TObject);begin xml := TNativeXml.CreateName('MyRoot'); ChDir('C:\Temp');end;procedure TForm1.Button1Click(Sender: TObject);begin xml.SaveToFile('Test_Default.xml'); //encoding="UTF-8" xml.Externa 阅读全文
posted @ 2011-03-24 15:15 万一 阅读(5337) 评论(5) 推荐(0) 编辑
NativeXml (2):对象建立
摘要:相关方法与属性:TNativeXml.Create(...);TNativeXml.CreateEx(...);TNativeXml.CreateName(...);Obj.New;Obj.ReadFromString(...);Obj.VersionString;Obj.EncodingString;测试代码:uses NativeXml; //!const xmlFile = 'C:\Temp\xml_test_files\basic.xml'; //测试文件{使用 Create 建立时可指定属主并随属主一同释放}procedure TForm1.Button1Click( 阅读全文
posted @ 2011-03-24 13:26 万一 阅读(6891) 评论(4) 推荐(0) 编辑
NativeXml (1):下载、安装、测试
摘要:终于又能挤出点时间学点 Delphi 了。学习 NativeXml 的目的:1、以后再用到 Xml 就准备用它了。2、学习其内存处理机制。3、更多了解 Xml 的相关细节。刚刚下载到最新的 NativeXml328,发现竟是 3 天前刚刚更新的。相关地址:http://www.simdesign.nl/xml.html http://www.simdesign.nl/forum/viewforum.php?f=2 NativeXml328 安装:把 general 下的 4 个文件和 nativexml 下的 3 个文件复制在一起,然后通过 Tools > Options > De 阅读全文
posted @ 2011-03-24 11:57 万一 阅读(14236) 评论(9) 推荐(2) 编辑



点击右上角即可分享
微信分享提示