摘要: 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 万一 阅读(1624) 评论(2) 推荐(0) 编辑
摘要: 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 万一 阅读(1631) 评论(0) 推荐(0) 编辑
摘要: {相关方法}TDirect2DCanvas.RenderTarget.CreateLayer(); //建立层TDirect2DCanvas.RenderTarget.PushLayer(); //开始层;层的功能及效果取决于它的 TD2D1LayerParameters 结构参数TDirect2DCanvas.RenderTarget.PopLayer(); //结束层{相关结构}TD2D1LayerParameters = record contentBounds: TD2D1RectF; //层的有效范围 geometricMask: ID2D1Geometry; //用于剪裁的几何图形 阅读全文
posted @ 2011-04-05 15:34 万一 阅读(1839) 评论(0) 推荐(0) 编辑
摘要: 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 万一 阅读(2426) 评论(0) 推荐(0) 编辑
摘要: 实现蒙版效果有三种途径:使用 FillOpacityMask()、使用 FillGeometry() 方法、使用图层。FillOpacityMask() 用于处理图像蒙版。期间用到 ID2D1Bitmap,因为对图像格式要求较高,我通过 TDirect2DCanvas.CreateBitmap() 建立 ID2D1Bitmap 时没有成功。后来使用了自定义函数直接使用 WIC 加载并转换格式。蒙版图片是透明图片,将会透过其着色区域看到下层的图片;蒙版图片是以画刷的方式使用的。实现蒙版区域计算时,还应设置 AntialiasMode 模式为 D2D1_ANTIALIAS_MODE_ALIASED 阅读全文
posted @ 2011-04-05 09:37 万一 阅读(3699) 评论(0) 推荐(1) 编辑