文档章节

Direct2D (19) : 图层之 TD2D1LayerParameters.geometricMask (使用几何图形剪裁图层)

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 118
阅读 10
收藏 0
点赞 0
评论 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, wic.Width, wic.Height);

  {几何图形}
  D2DFactory.CreateEllipseGeometry(D2D1Ellipse(D2D1PointF(wic.Width/2, wic.Height/2), wic.Width/2, wic.Height/2), iEllipse);

  cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
  cvs.RenderTarget.SetTransform(TD2DMatrix3x2F.Translation((ClientWidth-wic.width)/2, (ClientHeight-wic.height)/2));

  cvs.BeginDraw;
  cvs.RenderTarget.CreateLayer(nil, iLayer);
  rLayerParameters.contentBounds := R;
  rLayerParameters.geometricMask := iEllipse; //!
  rLayerParameters.maskAntialiasMode := D2D1_ANTIALIAS_MODE_PER_PRIMITIVE;
  rLayerParameters.maskTransform := TD2DMatrix3x2F.Identity;
  rLayerParameters.opacity := 1.0;
//  rLayerParameters.opacityBrush := nil;
  rLayerParameters.layerOptions := D2D1_LAYER_OPTIONS_NONE;

  cvs.RenderTarget.PushLayer(rLayerParameters, iLayer);
  cvs.StretchDraw(R, wic);
  cvs.RenderTarget.PopLayer;

  cvs.EndDraw;
  cvs.Free;
  wic.Free;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  Repaint;
end;


效果图:



本文转载自:http://www.cnblogs.com/del/archive/2011/04/05/2005949.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
Direct2D教程(十一)几何变换

什么是几何变换(Transform) 在图形学中,主要有三种几何变换,分别是平移(Translate),旋转(Rotation)和缩放(Scaling)。在D2D中,这三种变换都有实现,而且还有一种不太常见的变换,...

吞吞吐吐的 ⋅ 2017/09/12 ⋅ 0

Direct2D教程(十二)图层

什么是Layers? Layer,中文译成图层,在Direct2D中可以用来完成一些特殊效果,使用Layer的时候,先将Layer Push到render target,然后进行绘制,此时是直接绘制在Layer上的,绘制完毕后,将...

吞吞吐吐的 ⋅ 2017/10/26 ⋅ 0

iOS开发 专用图层(一):关于 CAShapeLayer

CAShapeLayer 优点: 渲染快速。CAShapeLayer使用了硬件加速,绘制同一图形会比用Core Graphics快很多。 高效使用内存。一个CAShapeLayer不需要像普通CALayer一样创建一个寄宿图形,所以无论...

神补刀 ⋅ 2015/11/24 ⋅ 0

[iOS Animation]-CALayer 专用图层

专用图层 复杂的组织都是专门化的 Catharine R. Stimpson 到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能。但是Core Animation图层不仅仅能作用于...

浩浩老师 ⋅ 2015/09/23 ⋅ 0

快速学习ggplot2

R语言里面一个比较重要的绘图包——ggplot2,是由Hadley Wickham于2005年创建,于2012年四月进行了重大更新,作者目前的工作是重写代码,简化语法,方便用户开发和使用。ggplot2的核心理念是...

wzgl__wh ⋅ 2016/07/15 ⋅ 0

Wine 1.9.19 发布,Windows 应用兼容层

Wine 1.9.19 发布了。 本次主要改进内容如下: 为HID总线驱动程序提供初始版本。 手柄驱动功能提升。 初步实施的Direct2D渲染的DC。 改进图metafile文件,支持GDI+。 各种bug修复。 下载: ...

达尔文 ⋅ 2016/09/19 ⋅ 10

ArcGIS实用制图技巧——如何制作“粉饰”效果

现在讲解粉饰效果的制作方法,这在ArcMap当中对于想要重点突出区域以外的多边形,符号化时使用白色填充和透明度的效果即可实现。 左侧地图的图形背景组织很差。右侧地图通过使用粉饰效果突出...

长平狐 ⋅ 2012/11/28 ⋅ 0

[iOS Animation]-CALayer 图层性能二

CAShapeLayer 和独立作用的时候都不会有太大的性能问题,但是当他俩结合在一起,就触发了屏幕外渲染。有时候你想显示圆角并沿着图层裁切子图层的时候,你可能会发现你并不需要沿着圆角裁切,...

浩浩老师 ⋅ 2015/09/16 ⋅ 0

冯德明/GraphicsMagic

#GraphicsMagic 本项目是一个仿PhotoShop的图像处理软件,由来自大连的来自中国大连的一对儿双胞胎兄弟,马晓光、马晓明创作,经他们同意开源,我代为上传至开源中国GIT中,欢迎大家一起参与...

冯德明 ⋅ 2015/01/13 ⋅ 0

Android游戏开发之地图编辑器的使用以及绘制地图 (四)

雨松MOMO带你走进游戏开发的世界之地图编辑器的使用以及绘制地图 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6615...

彭博 ⋅ 2012/03/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 34分钟前 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 昨天 ⋅ 0

vim编辑模式、vim命令模式、vim实践

vim编辑模式 编辑模式用来输入或修改文本内容,编辑模式除了Esc外其他键几乎都是输入 如何进入编辑模式 一般模式输入以下按键,均可进入编辑模式,左下角提示 insert(中文为插入) 字样 i ...

蛋黄Yolks ⋅ 昨天 ⋅ 0

大数据入门基础:SSH介绍

什么是ssh 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码...

董黎明 ⋅ 昨天 ⋅ 0

web3j教程

web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 汇智网最新发布的web3j教程,详细讲解...

汇智网教程 ⋅ 昨天 ⋅ 0

谷歌:安全问题机制并不如你想象中安全

腾讯科技讯 5月25日,如今的你或许已经对许多网站所使用的“安全问题机制”习以为常了,但你真的认为包括“你第一个宠物的名字是什么?”这些问题能够保障你的帐户安全吗? 根据谷歌(微博)安...

问题终结者 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部