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

04 2011 档案
Html5 之 Canvas
摘要:标签:<canvas id="myCanvas" width="200" height="200" style="border:1px solid #c3c3c3;">不支持提示</canvas>相关接口://interface CanvasRenderingContext2D { readonly attribute HTMLCanvasElement canvas; void save(); void restore(); void scale(in double x, in doubl 阅读全文
posted @ 2011-04-29 22:52 万一 阅读(2918) 评论(0) 推荐(0) 编辑
解析 png 图片的十六进制字符流的函数 - 回复 "黑人" 的问题
摘要:问题来源:http://www.cnblogs.com/del/archive/2010/04/24/1719631.html#2079634使用下面的 Hex2Png() 函数解析黑人给的数据,结果是一个 93396 的验证码图片。uses pngimage;{从 png 图片到十六进制字符串}function Png2Hex(png: TPngImage): string;var stream: TMemoryStream;begin stream := TMemoryStream.Create; png.SaveToStream(stream); SetLength(Result, st 阅读全文
posted @ 2011-04-26 22:53 万一 阅读(4637) 评论(4) 推荐(0) 编辑
Direct2D (43) : IDWriteGdiInterop 接口
摘要:IDWriteGdiInterop 接口的主要用途是它提供 IDWriteBitmapRenderTarget 留出了 HDC 接口,以与 GDI、GDI+ 交互;另提供了 LOGFONT 结构与 IDWriteFont、IDWriteFontFace 的相互转换的方法。IDWriteGdiInterop = interface(IUnknown) function CreateFontFromLOGFONT( { LOGFONT -> IDWriteFont } var logFont: LOGFONTW; // out font: IDWriteFont // ): HResult; 阅读全文
posted @ 2011-04-16 13:00 万一 阅读(2726) 评论(1) 推荐(1) 编辑
Direct2D (42) : 在文本布局中嵌入图片 IDWriteTextLayout.SetInlineObject()
摘要:这段代码怎么也过不去了,反反复复找不到原因;有谁知道,万望提醒我一下。上面是刚碰到错误时的求助信息;现在终于找到错误了:是 D2D1.pas 的代码有问题,修改方法如下:{ 1、把 D2D1.pas 中 4142 行中的 var 修改为 const 或者去掉 }function SetInlineObject(var inlineObject: IDWriteInlineObject; textRange: TDwriteTextRange): HResult; stdcall;{ 2、重新编译 Direct2D.pas、D2D1.pas,最好在 Debug 和 Release 两种模式下分别 阅读全文
posted @ 2011-04-14 23:34 万一 阅读(2920) 评论(4) 推荐(0) 编辑
Direct2D (41) : 文本命中测试 - IDWriteTextLayout.HitTestPoint()
摘要:uses Direct2D, D2D1;var iTextLayout: IDWriteTextLayout;{构建 DWRITE_TEXT_RANGE 结构的函数}function DWriteTextRange(pos,len: Cardinal): TDwriteTextRange;begin Result.startPosition := pos; Result.length := len;end;{建立 IDWriteTextLayout}procedure TForm1.FormCreate(Sender: TObject);var str: string; iTextFormat 阅读全文
posted @ 2011-04-14 18:11 万一 阅读(1849) 评论(0) 推荐(0) 编辑
关于开放数组的小练习
摘要:{整数求和函数,使用指定类型的开放数组}function Fun1(arr: array of Integer): Integer;var n: Integer;begin Result := 0; for n in arr do Inc(Result, n);end;{整数、浮点数或布尔值的求和函数,使用无类型的开放数组}function Fun2(arr: array of const): Double;var i: Integer;begin Result := 0; for i := Low(arr) to High(arr) do begin case arr[i].VType of 阅读全文
posted @ 2011-04-14 10:50 万一 阅读(2385) 评论(0) 推荐(0) 编辑
Direct2D (40) : 分别设置 IDWriteTextLayout 中文本的颜色
摘要:function SetDrawingEffect( const drawingEffect: IUnknown; //颜色接口; 该接口需自己定义和实现, 只要能存取颜色即可 textRange: TDwriteTextRange //要设置的范围): HResult; stdcall;测试代码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Direct2D, D2D1;const SID_IColorDrawingEff 阅读全文
posted @ 2011-04-14 09:31 万一 阅读(2433) 评论(0) 推荐(0) 编辑
Direct2D (39) : 使用 IDWriteTextLayout.Draw() 方法绘制文本
摘要:使用 IDWriteTextLayout.Draw() 方法绘制文本主要是实现 IDWriteTextRenderer 接口。IDWriteTextRenderer 接口只能是手动实现,很灵活。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Direct2D, D2D1;type TForm1 = class(TForm) procedure FormPaint(Sender: TObject); procedure Form 阅读全文
posted @ 2011-04-13 15:59 万一 阅读(3296) 评论(1) 推荐(0) 编辑
Direct2D (38) : RenderTarget.DrawTextLayout() 与 IDWriteTextLayout
摘要:使用 RenderTarget.DrawTextLayout() 方法主要是设置 IDWriteTextLayout 接口;构建 IDWriteTextLayout 接口需要 IDWriteTextFormat 接口。IDWriteTextLayout 接口是经过完全分析和格式化后的文本块。{RenderTarget.DrawTextLayout() 方法}procedure DrawTextLayout( origin: D2D1_POINT_2F; //起点 const textLayout: IDWriteTextLayout; //分析和格式化后的文本块 const defaultFo 阅读全文
posted @ 2011-04-13 12:39 万一 阅读(3111) 评论(0) 推荐(1) 编辑
Direct2D (37) : 使用不同画刷绘制文本
摘要:uses Direct2D, D2D1;{建立位图画刷的函数}function GetBitmapBrush(Canvas: TDirect2DCanvas; filePath: string): ID2D1BitmapBrush;var rBBP: TD2D1BitmapBrushProperties; bit: TBitmap;begin bit := TBitmap.Create; bit.LoadFromFile(filePath); rBBP.extendModeX := D2D1_EXTEND_MODE_WRAP; rBBP.extendModeY := D2D1_EXTEND_M 阅读全文
posted @ 2011-04-13 11:32 万一 阅读(2358) 评论(0) 推荐(0) 编辑
Direct2D (36) : RenderTarget.DrawText() 与 IDWriteTextFormat
摘要:TDirect2DCanvas 提供了两种输出文本的方法:TextOut()、TextRect(),因太过高级,基本没有实用价值。TDirect2DCanvas.RenderTarget 有三种输出文本的方法:DrawText()、DrawTextLayout()、DrawGlyphRun()。DrawText() 对文本格式的控制能力类似 TMemo;DrawTextLayout() 对文本格式的控制能力类似 TRichEdit;DrawGlyphRun() 可以完成更复杂的字形输出。另外 DirectWrite 还有其它文本输出方法,如回调 IDWriteTextRenderer 接口。T 阅读全文
posted @ 2011-04-12 21:42 万一 阅读(3983) 评论(1) 推荐(0) 编辑
Direct2D (35) : 通过 DirectWrite 获取字体列表
摘要:uses Direct2D, D2D1;procedure TForm1.Button1Click(Sender: TObject);var iFontCollection: IDWriteFontCollection; //字体集合 iFontFamily: IDWriteFontFamily; //字族 iLocalizedStrings: IDWriteLocalizedStrings; //按区域设置名称编制索引的字符串集合 i,j: Integer; buf: array[0..LF_FACESIZE] of Char;begin ListBox1.Clear; DWriteFact 阅读全文
posted @ 2011-04-11 19:09 万一 阅读(2220) 评论(4) 推荐(0) 编辑
Direct2D (34) : 开始学习 DirectWrite
摘要:{Direct2D 相关技术模块}Direct2D //相关信息:d2d1.dll; D2D1.pas、Direct2D.pasDirectWrite //相关信息:dwrite.dll; D2D1.pasWICBitmap //相关信息:windowscodecs.dll; Wincodec.pas、Graphics.pas(TWICBitmap){Direct2D 相关接口}ID2D1Bitmap //表示已绑定到 ID2D1RenderTarget 的位图。ID2D1BitmapBrush //用位图绘制区域。ID2D1BitmapRenderTarget //呈现到由 CreateCo 阅读全文
posted @ 2011-04-11 10:46 万一 阅读(3290) 评论(0) 推荐(0) 编辑
Direct2D (33) : 通过 ID2D1BitmapRenderTarget 绘制背景网格
摘要:ID2D1BitmapRenderTarget 是内存绘图的解决方案。它从 ID2D1RenderTarget 继承,只多出一个 GetBitmap() 方法。{相关方法}TDirect2DCanvas.RenderTarget.CreateCompatibleRenderTarget(); //建立 ID2D1BitmapRenderTargetID2D1BitmapRenderTarget.GetBitmap(); //从 ID2D1BitmapRenderTarget 获取 ID2D1Bitmap测试代码:uses Direct2D, D2D1;{通过 ID2D1BitmapRender 阅读全文
posted @ 2011-04-08 15:52 万一 阅读(4091) 评论(44) 推荐(0) 编辑
Direct2D (32) : 把几何图形网格化为若干三角形 - ID2D1Geometry.Tessellate()
摘要:{相关接口}ID2D1TessellationSink //用于接收 ID2D1Geometry.Tessellate() 方法输出的三角形数组ID2D1Mesh //是使用 ID2D1TessellationSink 填充的网格,它负责 Open ID2D1TessellationSink{相关方法}TDirect2DCanvas.RenderTarget.CreateMesh() //建立 ID2D1MeshTDirect2DCanvas.RenderTarget.FillMesh() //填充 ID2D1Mesh,只能在 D2D1_ANTIALIAS_MODE_ALIASED 模式下使用 阅读全文
posted @ 2011-04-08 13:25 万一 阅读(2316) 评论(0) 推荐(0) 编辑
Direct2D (31) : 命中测试 - ID2D1Geometry.FillContainsPoint()、StrokeContainsPoint()
摘要:uses Direct2D, D2D1;const penWidth = 25;var iGeometry: ID2D1EllipseGeometry;procedure TForm1.FormCreate(Sender: TObject);begin D2DFactory.CreateEllipseGeometry(D2D1Ellipse(D2D1PointF(120, 90), 80, 50), iGeometry);end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); 阅读全文
posted @ 2011-04-08 11:15 万一 阅读(2039) 评论(0) 推荐(0) 编辑
Direct2D (30) : 判断几何对象的关系 - ID2D1Geometry.CompareWithGeometry()
摘要:{相关常量}//D2D1_GEOMETRY_RELATION = type Integer;D2D1_GEOMETRY_RELATION_UNKNOWN = 0; //未知D2D1_GEOMETRY_RELATION_DISJOINT = 1; //不相交D2D1_GEOMETRY_RELATION_IS_CONTAINED = 2; //属于D2D1_GEOMETRY_RELATION_CONTAINS = 3; //包含D2D1_GEOMETRY_RELATION_OVERLAP = 4; //重叠测试代码:uses Direct2D, D2D1;procedure TForm1.Form 阅读全文
posted @ 2011-04-07 22:32 万一 阅读(1619) 评论(0) 推荐(0) 编辑
Direct2D (29) : 简化曲线到直线 - ID2D1Geometry.Simplify()
摘要:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iEllipseGeometry: ID2D1EllipseGeometry; iPathGeometry: ID2D1PathGeometry; iGeometrySink: ID2D1GeometrySink; ptCenter: TPoint;begin ptCenter := Point(ClientWidth div 2, ClientHeight div 2); D2DFactory.CreateElli 阅读全文
posted @ 2011-04-07 17:32 万一 阅读(2104) 评论(1) 推荐(0) 编辑
Direct2D (28) : 获取几何图形的面积、线总长度和指定位置的点坐标
摘要:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iEllipseGeometry: ID2D1EllipseGeometry; area,length: Single; rPointF1,rPointF2: TD2DPoint2f; ptCenter: TPoint;begin ptCenter := Point(ClientWidth div 2, ClientHeight div 2); D2DFactory.CreateEllipseGeometry(D2D 阅读全文
posted @ 2011-04-07 17:08 万一 阅读(1769) 评论(0) 推荐(0) 编辑
Direct2D (27) : 获取几何图形的轮廓 - ID2D1Geometry.Outline()
摘要:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iEllipseGeometry: ID2D1EllipseGeometry; iTransformedGeometrys: array[0..7] of ID2D1TransformedGeometry; iGeometryGroup: ID2D1GeometryGroup; iGeometrySink: ID2D1GeometrySink; iPathGeometry: ID2D1PathGeometry; pt 阅读全文
posted @ 2011-04-07 15:16 万一 阅读(1999) 评论(0) 推荐(0) 编辑
Direct2D (26) : 获取几何图形的边界
摘要:{相关方法}ID2D1Geometry.GetBounds(); //获取边界矩形ID2D1Geometry.GetWidenedBounds(); //获取包含画笔区域的边界矩形测试代码:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iGeometry: ID2D1EllipseGeometry; R1,R2: TD2DRectF; iBrush: ID2D1SolidColorBrush;begin {几何图形} D2DFactory.CreateEllip 阅读全文
posted @ 2011-04-07 12:24 万一 阅读(1766) 评论(0) 推荐(0) 编辑
Direct2D (25) : 将画笔线条所占用的区域转换为路径 - ID2D1Geometry.Widen()
摘要:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iGeometry: ID2D1Geometry; iPathGeometry: ID2D1PathGeometry; iGeometrySink: ID2D1GeometrySink;begin {建立一个几何对象 iGeometry} D2DFactory.CreateEllipseGeometry( D2D1Ellipse(D2D1PointF(ClientWidth/2, ClientHeight/2), C 阅读全文
posted @ 2011-04-07 11:34 万一 阅读(1658) 评论(0) 推荐(0) 编辑
Direct2D (24) : 合并几何对象
摘要:合并通过 ID2D1Geometry.CombineWithGeometry() 完成,但返回的是 ID2D1SimplifiedGeometrySink(ID2D1GeometrySink 的父对象);需要把 ID2D1SimplifiedGeometrySink 添加到 ID2D1PathGeometry 才能使用。uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iEllipseGeometry1, iEllipseGeometry2: ID2D1Ellips 阅读全文
posted @ 2011-04-06 20:39 万一 阅读(1859) 评论(0) 推荐(0) 编辑
Direct2D (23) : 复合几何对象之 ID2D1GeometryGroup
摘要:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iGeometryGroup: ID2D1GeometryGroup; arrGeometry: array[0..3] of ID2D1EllipseGeometry; ptCenter: TD2D1Point2F; i: Integer; rh,rv: Single; iFactory: ID2D1Factory;begin ptCenter := D2D1PointF(ClientWidth/2, Client 阅读全文
posted @ 2011-04-06 16:02 万一 阅读(1689) 评论(0) 推荐(0) 编辑
Direct2D (22) : 复合几何对象之 ID2D1TransformedGeometry
摘要:复合几何对象包括 ID2D1GeometryGroup 和 ID2D1TransformedGeometry,它们都继承自 ID2D1Geometry。ID2D1TransformedGeometry 只是包含了 2D 变换的 ID2D1Geometry。uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iTransformedGeometry: ID2D1TransformedGeometry; iRectangleGeometry: ID2D1Rectangle 阅读全文
posted @ 2011-04-06 15:03 万一 阅读(1490) 评论(0) 推荐(0) 编辑
Direct2D (21) : 微软官方关于路径的示例
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormPaint(Sender: TObject); end;var Form1: TForm1;implementation{$R *.dfm}uses Direct2D, D2D1;{左边小山的路径}function GetLeftMountainGeometry: ID2D1PathGeometry; 阅读全文
posted @ 2011-04-06 12:42 万一 阅读(2097) 评论(0) 推荐(0) 编辑
Direct2D (20) : 图层之 TD2D1LayerParameters.opacityBrush (为图层指定蒙版画刷)
摘要:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iLayer: ID2D1Layer; rLayerParameters: TD2D1LayerParameters; wic: TWICImage; R: TRect; iLinearGradientBrush: ID2D1LinearGradientBrush; rLinear: TD2D1LinearGradientBrushProperties; arrGradientStop: array[0..2] of 阅读全文
posted @ 2011-04-05 21:48 万一 阅读(1633) 评论(2) 推荐(0) 编辑
Direct2D (19) : 图层之 TD2D1LayerParameters.geometricMask (使用几何图形剪裁图层)
摘要:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iLayer: ID2D1Layer; rLayerParameters: TD2D1LayerParameters; wic: TWICImage; R: TRect; iEllipse: ID2D1EllipseGeometry;begin wic := TWICImage.Create; wic.LoadFromFile('C:\Temp\Test.png'); R := Rect(0, 0, 阅读全文
posted @ 2011-04-05 17:08 万一 阅读(1642) 评论(0) 推荐(0) 编辑
Direct2D (18) : 图层之 TD2D1LayerParameters.contentBounds (图层的有效范围)
摘要:{相关方法}TDirect2DCanvas.RenderTarget.CreateLayer(); //建立层TDirect2DCanvas.RenderTarget.PushLayer(); //开始层;层的功能及效果取决于它的 TD2D1LayerParameters 结构参数TDirect2DCanvas.RenderTarget.PopLayer(); //结束层{相关结构}TD2D1LayerParameters = record contentBounds: TD2D1RectF; //层的有效范围 geometricMask: ID2D1Geometry; //用于剪裁的几何图形 阅读全文
posted @ 2011-04-05 15:34 万一 阅读(1848) 评论(0) 推荐(0) 编辑
Direct2D (17) : 蒙版之 FillGeometry() 方法
摘要:FillGeometry() 可通过两个画刷的重叠运算获取蒙版效果,作为蒙版画刷的渐变色中应该至少有一个透明色。使用放射渐变画刷做蒙版:uses Direct2D, D2D1, Wincodec, ActiveX;{从指定文件建立 ID2D1Bitmap 的函数}function GetD2D1Bitmap(RenderTarget: ID2D1RenderTarget; imgPath: string): ID2D1Bitmap;var iWicFactory: IWICImagingFactory; iWICDecoder: IWICBitmapDecoder; iWICFrameDeco 阅读全文
posted @ 2011-04-05 13:10 万一 阅读(2448) 评论(0) 推荐(0) 编辑
Direct2D (16) : 蒙版之 FillOpacityMask() 方法
摘要:实现蒙版效果有三种途径:使用 FillOpacityMask()、使用 FillGeometry() 方法、使用图层。FillOpacityMask() 用于处理图像蒙版。期间用到 ID2D1Bitmap,因为对图像格式要求较高,我通过 TDirect2DCanvas.CreateBitmap() 建立 ID2D1Bitmap 时没有成功。后来使用了自定义函数直接使用 WIC 加载并转换格式。蒙版图片是透明图片,将会透过其着色区域看到下层的图片;蒙版图片是以画刷的方式使用的。实现蒙版区域计算时,还应设置 AntialiasMode 模式为 D2D1_ANTIALIAS_MODE_ALIASED 阅读全文
posted @ 2011-04-05 09:37 万一 阅读(3723) 评论(0) 推荐(1) 编辑
Direct2D (15) : 剪辑
摘要:绘制在 RenderTarget.PushAxisAlignedClip() 与 RenderTarget.PopAxisAlignedClip() 之间的内容将被指定的矩形剪辑。uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; R,RClip: TRect;begin cvs := TDirect2DCanvas.Create(Canvas, ClientRect); R := ClientRect; InflateRect(R, -ClientWidth div 阅读全文
posted @ 2011-04-03 10:19 万一 阅读(2252) 评论(0) 推荐(0) 编辑
Direct2D (14) : 画笔
摘要:画笔类 TDirect2DPen 的 Brush 属性是 TDirect2DBrush,现在的单色画笔其实是调用的实心画刷。因为画刷的强大,所以让画笔丰富起来不是难事。TDirect2DPen 的 StrokeStyle 属性是 ID2D1StrokeStyle 类型,它决定着线帽、拐角样式等;但遗憾的是该属性是只读的,基本无用。但 TDirect2DPen 的 Style 属性还是巧妙实现了 psSolid, psDash, psDot, psDashDot, psDashDotDot。测试代码:uses Direct2D, D2D1;procedure TForm1.FormPaint(S 阅读全文
posted @ 2011-04-02 21:54 万一 阅读(2237) 评论(0) 推荐(0) 编辑
Direct2D (13) : 画刷之 ID2D1BitmapBrush
摘要:{相关结构}TD2D1BitmapBrushProperties = record extendModeX: D2D1_EXTEND_MODE; //三个可选值分别是:0(延伸)、1(换行)、2(镜像) extendModeY: D2D1_EXTEND_MODE; //同上 interpolationMode: D2D1_BITMAP_INTERPOLATION_MODE; //拉伸图像时的差值算法:0(高速低质)、1(高质低速)end;测试代码:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: T 阅读全文
posted @ 2011-04-02 17:16 万一 阅读(2356) 评论(2) 推荐(0) 编辑
Direct2D (12) : 画刷之 ID2D1RadialGradientBrush
摘要:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; iBrush: ID2D1RadialGradientBrush; R: TRect; rRGBP: TD2D1RadialGradientBrushProperties; //结构包含:中心点、偏移点、横向半径、纵向半径 arrGradientStop: array[0..1] of TD2D1GradientStop; iGradientStops: ID2D1GradientStopCollection;beg 阅读全文
posted @ 2011-04-02 16:17 万一 阅读(1366) 评论(0) 推荐(0) 编辑
Direct2D (11) : 画刷之 ID2D1LinearGradientBrush
摘要:TDirect2DCanvas.Brush 的类型是 TDirect2DBrush,它和 GDI 的 TBrush 的区别主要有两点:1、只保留了 TBrush.Style 中的 bsSolid、bsClear 选项,弃用了:bsHorizontal、bsVertical、bsFDiagonal、bsBDiagonal、bsCross、bsDiagCross。2、其 Handle 属性是 Direct2D 中的 ID2D1Brush。Direct2D 提供有四种画刷:ID2D1SolidColorBrush //纯色画刷;TDirect2DBrush 默认使用了它ID2D1LinearGrad 阅读全文
posted @ 2011-04-02 15:01 万一 阅读(2353) 评论(0) 推荐(0) 编辑
回复 "Globe" 关于 XML 编码转换的问题
摘要:问题来源:http://www.cnblogs.com/del/archive/2011/03/24/1994029.html#2059114Globe 同学有这样的 XML 文件:其中包含中文、韩文,并且有些是十六进制、有些是十进制,真实的内容应该是:下面是把它打开并另存为标准的 UTF-8 格式 XML 的代码(使用了 DelphiXE 最新的正则表达式组件):unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrl 阅读全文
posted @ 2011-04-01 22:32 万一 阅读(3652) 评论(7) 推荐(0) 编辑
Direct2D (10) : 文本输出初步
摘要:uses Direct2D, TypInfo;procedure TForm1.FormCreate(Sender: TObject);var f: TTextFormats;begin for f := Low(TTextFormats) to High(TTextFormats) do CheckListBox1.Items.Add(GetEnumName(TypeInfo(TTextFormats), Ord(f))); CheckListBox1.Align := alRight; Edit1.Align := alBottom; Edit1.OnChange := CheckList 阅读全文
posted @ 2011-04-01 20:57 万一 阅读(2076) 评论(0) 推荐(0) 编辑
Direct2D (9) : 显示图像
摘要:uses Direct2D;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; wic: TWICImage; R: TRect;begin wic := TWICImage.Create; wic.LoadFromFile('C:\Temp\Test.png'); cvs := TDirect2DCanvas.Create(Canvas, ClientRect); cvs.BeginDraw; cvs.Draw(10, 10, wic); R := Bounds(wic.Width div 阅读全文
posted @ 2011-04-01 15:48 万一 阅读(4420) 评论(6) 推荐(0) 编辑
Direct2D (8) : 透明色
摘要:uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject);var cvs: TDirect2DCanvas; R: TRect;begin cvs := TDirect2DCanvas.Create(Canvas, ClientRect); cvs.BeginDraw; cvs.Pen.Color := Color; cvs.Brush.Color := clGreen; R := Rect(30, 30, 200, 150); cvs.Ellipse(R); cvs.Brush.Handle.SetOpacity(0.75 阅读全文
posted @ 2011-04-01 13:10 万一 阅读(2632) 评论(0) 推荐(0) 编辑
Direct2D (7) : 空间变换
摘要:{相关方法} TDirect2DCanvas.RenderTarget.SetTransform();TDirect2DCanvas.RenderTarget.GetTransform();{相关结构}TD2DMatrix3x2F (或D2D_MATRIX_3X2_F) //因第三列的值在这里是固定的(0,0,1),所以这里用的是 3*2 的矩阵;该结构重载了 * 运算符{TD2DMatrix3x2FHelper 为 TD2DMatrix3x2F 提供的方法(多为 class 方法)}Identity(); //初始化 TD2DMatrix3x2F,默认值:_11、_22 为 1.0,其它是 阅读全文
posted @ 2011-04-01 12:32 万一 阅读(2691) 评论(2) 推荐(0) 编辑
Direct2D (6) : 绘制质量(设置抗锯齿模式)
摘要:{相关方法}TDirect2DCanvas.RenderTarget.SetAntialiasMode();TDirect2DCanvas.RenderTarget.GetAntialiasMode;{相关常量}D2D1_ANTIALIAS_MODE_PER_PRIMITIVE = 0;D2D1_ANTIALIAS_MODE_ALIASED = 1;测试代码:uses Direct2D, D2D1;procedure TForm1.FormCreate(Sender: TObject);begin CheckBox1.Caption := 'D2D1_ANTIALIAS_MODE_PE 阅读全文
posted @ 2011-04-01 00:02 万一 阅读(5392) 评论(10) 推荐(0) 编辑



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