文档章节

Direct2D (31) : 命中测试 - ID2D1Geometry.FillContainsPoint()、StrokeContainsPoint()

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 156
阅读 2
收藏 0
点赞 0
评论 0

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);
var
  bFill, bStroke: LongBool;
  intBool: Integer;
  str: string;
begin
  iGeometry.FillContainsPoint(Point(X,Y), TD2DMatrix3x2F.Identity, 0, bFill);
  iGeometry.StrokeContainsPoint(Point(X,Y), penWidth, nil, TD2DMatrix3x2F.Identity, 0, bStroke);
  intBool := 0;
  Inc(intBool, Integer(bFill) shl 1);
  Inc(intBool, Integer(bStroke) shl 2);
  case intBool of
    0: str := '无命中';
    2: str := '命中椭圆';
    4: str := '命中椭圆边缘';
    6: str := '同时命中椭圆及边缘';
  end;
  Caption := str;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  cvs: TDirect2DCanvas;
begin
  cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
  cvs.BeginDraw;
  cvs.Brush.Color := clYellow;
  cvs.FillGeometry(iGeometry);

  cvs.Pen.Color := clRed;
  cvs.Pen.Brush.Handle.SetOpacity(0.5);
  cvs.Pen.Width := penWidth;
  cvs.DrawGeometry(iGeometry);

  cvs.Pen.Brush.Handle.SetOpacity(1);
  cvs.Pen.Width := 1;
  cvs.DrawGeometry(iGeometry);
  cvs.EndDraw;
  cvs.Free;
end;


效果图:



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

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

概述 在Direct2D中,文本的绘制是通过DirectWrite来实现的,DirectWrite实际上已经是一个独立的DirectX组件了。关于DirectWrite,我摘录了MSDN的一段文字。 DirectWrite介绍 当今的应用程序应...

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

硬件加速:浏览器大战的新前沿

硬件加速:浏览器大战的新前沿 作者:Frederic Lardinois / 2009年11月24日 9:04AM 微软在本月初召开的专业开发者大会(Professional Developers Conference)上宣布了其最新的IE9计划,微软在...

老枪 ⋅ 2009/11/26 ⋅ 0

Windows桌面应用程序(1-2-4-7th) DPI和设备无关的像素

要使用Windows图形进行有效编程,您必须了解两个相关的概念: 每英寸点数(DPI) 设备无关像素(DIP)。 我们从DPI开始。这将需要短暂的绕行排版。在印刷术中,类型的大小以称为点的单位来测量。一点...

qq_37422196 ⋅ 01/12 ⋅ 0

Wine 1.7.31 发布,支持 Visual Studio 2013

Wine 1.7.31 发布,此版本是个开发版本,更新内容如下: 基于 Firefox 34 的 Gecko 引擎新版本 支持 C/C++ 运行时的 Visual Studio 2013 版本 DirectWrite 支持更多的 font metrics 更多 Di...

oschina ⋅ 2014/11/15 ⋅ 9

USB启动盘制作软件--iBurnMgr

iBurnMgr是一款基于Direct2D DirectWrite开发的USB启动盘制作软件,采用流行的扁平风格,使用原生C++开发,不依赖任何第三方库,USB启动盘制作过程使用多线程技术,制作过程可以中途终止,界...

Force武装卫队 ⋅ 2014/06/18 ⋅ 4

WPF 使用 Direct2D1 画图 绘制基本图形

本文来告诉大家如何在 Direct2D1 绘制基本图形,包括线段、矩形、椭圆 本文是一个系列 WPF 使用 Direct2D1 画图入门 WPF 使用 Direct2D1 画图 绘制基本图形 本文的组织参考Direct2D,对大神表...

lindexi_gd ⋅ 04/19 ⋅ 0

关于Direct3D11里汉字显示的一些思考

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/8147234 作者:毛星云 邮箱: happylifemxy@163.com 这篇文章里,浅墨希望与大家一起...

长平狐 ⋅ 2012/11/12 ⋅ 0

Direct2D绘图的问题,DrawBitmap

Direct2D如何先读取出一张BMP存放在内存中,再把它分隔成若干个BMP,依次画到页面上?我现在想到的只有用GDI读取,返回一个HBITMAP,然后再用Direct2D,但不都说GDI效率很低吗,所以想知道有...

自取灭亡 ⋅ 2016/08/08 ⋅ 2

Memcache缓存服务器(Nginx+php+Memcache+MySQL)

一、MemCache简介: MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从...

何小帅 ⋅ 2017/03/24 ⋅ 0

杂谈SharpDx中的WIC组件——我们需要WIC的图片编码功能么?

在前文 SharpDX之Direct2D教程II——加载位图文件和保存位图文件 中,发现在VB2010中不能很好的运用SharpDx中的WIC组件进行图片的编码工作。可能是我的设置问题,也可能是SharpDx对VB2010支持...

万仓一黍 ⋅ 2013/10/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

收集自网络的wordpress 分页导航的代码教程(全网最全版)

wordpress 分页导航是用来切换文章的一个功能,添加了 wordpress 分页导航后,用户即可自由到达指定的页面数浏览分类文章,而这样的一个很简单功能却有很多朋友在用插件:WP-PageNavi,插件的...

Rhymo-Wu ⋅ 34分钟前 ⋅ 0

微服务 WildFly Swarm 入门

Hello World 就像前面章节中的其他框架一样,我们希望添加一些基本的 Hello-world 功能,然后在其上逐步添加更多的功能。让我们从在我们的项目中创建一个 HolaResources 开始。您可以使用您的...

woshixin ⋅ 41分钟前 ⋅ 0

Maven的安装和Eclipse的配置

1. 下载Maven 下载地址 2. 解压压缩包,放到自己习惯的硬盘中 此处我将其放到了 D:\Tools 目录下。 3. 配置环境变量 右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量。 在系统变量中新建,变...

影狼 ⋅ 48分钟前 ⋅ 0

python pip使用国内镜像的方法

国内源 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://......

良言 ⋅ 49分钟前 ⋅ 0

对于url变化的spa应该如何使用微信jssdk

使用vue单页面碰上微信jssdk config验证失败的坑。第一次成功 之后切换页面全部失败,找到了解决方法,第一次验证成功后保存验证信息 切换页面时验证信息直接拿来用,加一个wx.error() 失败时...

孙冠峰 ⋅ 53分钟前 ⋅ 0

Spring Cloud Gateway 一般集成

SCF发布,带来很多新东西,不过少了点教程,打开方式又和以前的不一样,比如这个SCG,压根就没有入门指导,所以这里写一个,以备后用。 一、集成 pom.xml <dependency> <groupI...

kut ⋅ 57分钟前 ⋅ 0

建造模式

《JAVA与模式》之建造模式

Cobbage ⋅ 今天 ⋅ 0

WePY框架开发的小程序如何在微信web开发者工具中运行起来

一、首先需要安装node.js,安装步骤如下: 首先下载安装包 https://nodejs.org/en/download/ 点击下载相应的zip版本 然后将文件夹解压到任意目录 比如我这里解压到了:C:\Program Files\node...

Helios51 ⋅ 今天 ⋅ 0

使用EnumSet 代替位域(32)

1、位域(Bit field):使用or 运算将几个常量合并到一个集合中 位操作,可以有效地执行 AND 、OR 这样的位操作 但是 位域比int 常量枚举缺点更多 2、java.util 包里面的EnumSet 类是有效的替...

职业搬砖20年 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部