随笔分类 - Direct2D

Direct2D教程(外篇)环境配置
摘要: 2014年世界杯首场淘汰赛马上开始了,闲着没事,整理以前的博客草稿打发时间,意外的发现这篇文章,本来是打算加入到Direct2D那个系列的,不知道为什么把它给遗漏了。环境配置,对于熟手来说,不是什么重要的东西,但是对于新手却很重要,尤其是没有接触过Direct2D的朋友们,整理一下发了出来,没有放博...阅读全文

posted @ 2014-06-28 23:53 zdd 阅读(7318) | 评论 (1) 编辑

Direct2D教程(十二)图层
摘要: 什么是Layers?Layer,中文译成图层,在Direct2D中可以用来完成一些特殊效果,使用Layer的时候,先将Layer Push到render target,然后进行绘制,此时是直接绘制在Layer上的,绘制完毕后,将Layer Pop出来,刚刚绘制在Layer上的内容就会组合到render target上。在Direct2D中,Layer使用接口ID2D1Layer来表示。和画刷一样,Layer由render target创建,属于设备相关的资源,Layer可以用于任何render target上,只要二者在相同的资源作用域内,在同一时间内,Layer只能用于一个render ta阅读全文

posted @ 2013-04-15 09:40 zdd 阅读(6287) | 评论 (42) 编辑

Direct2D教程(十一)几何变换
摘要: 什么是几何变换(Transform)在图形学中,主要有三种几何变换,分别是平移(Translate),旋转(Rotation)和缩放(Scaling)。在D2D中,这三种变换都有实现,而且还有一种不太常见的变换,倾斜(Skewing)。 Transform是指将一个点从一个坐标系映射到另一个坐标系,或者将一个点从同一个坐标系的一个位置映射到另外一个位置。在实际应用中,通常是将几何图形从一个位置变换到另外一个位置,而图形是由多个顶点组成的,只要将图形中的所有顶点都变换一下,那么整个图形就完成了变换,所以变换的本质是对顶点的变换。在D2D中,用如下三维矩阵M来表示这种变换。矩阵M的默认值是单位..阅读全文

posted @ 2013-03-26 09:09 zdd 阅读(8320) | 评论 (9) 编辑

Direct2D教程(十)绘制文本
摘要: 概述在Direct2D中,文本的绘制是通过DirectWrite来实现的,DirectWrite实际上已经是一个独立的DirectX组件了。关于DirectWrite,我摘录了MSDN的一段文字。DirectWrite介绍当今的应用程序应提供高质量的文本渲染,分辨率无关的字体及完整的Unicode文本和布局支持,DirectWrite提供了这些功能,甚至比这更多。下面是DirectWrite的特性设备无关的文本布局系统,提高了文本的可读性(包括文档及UI上的文本)高质量的,子像素,ClearType文本的渲染(可以使用GDI及Direct2D或应用程序指定的渲染技术)硬件加速的文本渲染(和Di阅读全文

posted @ 2013-03-01 09:04 zdd 阅读(7866) | 评论 (22) 编辑

Direct2D教程(九)渲染位图
摘要: 概述这篇的标题更确切的说应该叫位图画刷,这样才好和前几篇对应起来。在Direct2D中,位图的渲染也是通过画刷来实现的。Direct2D中并没有直接操作位图的接口,而是借助WIC(Windows Image Component)来完成的。今天我们来看看如何在Direct2D中加载并显示位图。这个方法可以用来渲染背景。基本步骤如下。从文件创建WIC位图由WIC位图创建D2D位图使用D2D绘制位图在开始之前,首先简要介绍一下WIC什么是WIC?WIC全称是Windows Image Component,是一套扩展的API,用来处理数字图像,它是基于COM组件的。该API包含非常丰富的图像处理函数,阅读全文

posted @ 2013-02-27 09:30 zdd 阅读(9833) | 评论 (42) 编辑

Direct2D教程(八)梯度色画刷
摘要: 概述单色画刷产生的颜色是单一的,比如一个红色画刷只能输出红色,而渐变画刷则不同,它可以输出多种颜色,这些颜色通常是连续的,从一个颜色平滑过渡到另一个颜色,看起来有渐变的效果。渐变画刷又分为两种,一种是ID2D1LinearGradientBrush(线性渐变画刷),另一种是ID2D1RadialGradientBrush(放射渐变画刷),下图显示了这两种画刷的效果。线性渐变画刷这种画刷的颜色从一个位置线性渐变到另外一个位置,所以在创建这种画刷之前需要确定以下两个属性起始位置及颜色终止位置及颜色在Direct2D中,结构体D2D1_GRADIENT_STOP用来表示一个位置及其颜色,其定义如下:阅读全文

posted @ 2012-11-22 08:41 zdd 阅读(4875) | 评论 (2) 编辑

Direct2D中资源的创建顺序
摘要: 资源类型Direct2D中有两种类型的资源,设备无关资源和设备相关资源,设备无关的资源可以一次创建,永久使用(在程序生存期内),且通常创建于系统内存中,设备相关的资源和设备有相同的生命周期,一旦设备丢失,则资源也需重建。这类资源一般在显存中创建。设备无关的资源包括ID2D1DrawingStateBlockID2D1FactoryID2D1Geometry及继承自它的接口ID2D1GeometrySink和ID2D1SimplifiedGeometrySinkID2D1StrokeStyle设备相关的资源包括ID2D1Brush及继承自它的接口ID2D1LayerID2D1RenderTarg阅读全文

posted @ 2012-09-15 12:21 zdd 阅读(2432) | 评论 (0) 编辑

Direct2D教程(七)单色画刷
摘要: 概述画刷是D2D中最重要的资源之一,无论绘制什么图形,都离不开画刷,它好比是画家手中的画笔。画刷由render target创建,是设备相关的资源,如果渲染设备重建了,那么需要重新建立画刷。Direct2D中有以下四种类型的画刷,这些画刷全部继承自ID2D1Brush,并且有一些共同特征(比如设置和获取opacity,以及transform)。ID2D1SolidColorBrush 单色画刷ID2D1LinearGradientBrush 线性梯度色画刷ID2D1RadialGradientBrush 放射梯度色画刷ID2D1BitmapBrush 位图画刷下面是几种画刷及其对应的绘制效果画阅读全文

posted @ 2011-06-03 12:34 zdd 阅读(5179) | 评论 (10) 编辑

Direct2D教程(六)图形也能做运算
摘要: 概述大家都学过集合运算,给定两个集合,可以求他们的并集,交集,差集等。其实图形之间也能做运算,今天就带大家开始图形运算之旅,讲讲如何合并图形。在D2D中有四种方法合并图形,分别是并(UNION),交(INTERSECT),差(EXCLUDE)和异或(XOR)。那么图形之间是如何合并的呢?两个图形之间进行Xor的结果是什么呢?为了便于理解,我先把效果图贴上来。下面图片中第一副图示两个圆的原始图,第二副图是UNION的结果,取两个圆所有的部分,但是公共部分只保留一份。第三幅图是INTERSECT的结果,取两个圆的公共部分。第四幅图是XOR的结果,取两个圆公共部分以外的部分。最后一幅图是EXCLUD阅读全文

posted @ 2011-06-01 09:37 zdd 阅读(5544) | 评论 (10) 编辑

Direct2D教程(五)复合图形
摘要: 概述Direct2D支持以下几种类型的几何图形。Simple Geometry(简单几何图形) 矩形 圆角矩形 椭圆Path Geometry(路径图形)Composite Geometry(复合图形) Geometry Group(图形组) Transformed Geometry(变换的图形)上一篇介绍了Path geometry,这篇介绍复合图形。复合图形也可以叫做合成图形,包含两种,一种是图形组,即由多个图形组成的一组图形,另一种是经过变换的图形,D2D支持的变换有四种,平移,旋转,缩放和倾斜。图形组由于图形组是一组图形的集合,所以如果对图形组进行操作,会影响到其中每一个图形,这对批量阅读全文

posted @ 2011-05-31 10:05 zdd 阅读(5389) | 评论 (7) 编辑

Direct2D教程(四)Path Geometry
摘要: 概述Direct2D支持以下几种类型的几何图形,上一篇介绍了简单几何图形,这篇介绍Path geometry。Simple Geometry(简单几何图形)矩形圆角矩形椭圆Path Geometry(路径图形)Composite Geometry(复合图形)Geometry Group(图形组)Transformed Geometry(变换的图形)Path geometry,说白了,就是以路径来描述图形,由于翻译过来比较别扭,所以下文中出现该词的地方全部使用英文。Path geometry可以用来创建复杂的几何图形,因为无论多么复杂的图形都可以由一些基本的几何图元来表示,Path geomet阅读全文

posted @ 2011-05-27 09:02 zdd 阅读(8358) | 评论 (24) 编辑

Direct2D教程(三)简单几何图形
摘要: 从本章开始,我们介绍D2D几何图形。D2D图形分类Direct2D支持多种类型的几何图形,包括Simple Geometry(简单几何图形)矩形圆角矩形椭圆Path Geometry(路径图形)Composite Geometry(复合图形)Geometry Group(图形组)Transformed Geometry(变换的图形)各种图形对应的D2D接口如下,所有接口都继承自ID2D1Geometry。矩形-ID2D1RectangleGeometry圆角矩形-ID2D1RoundedRectangleGeometry椭圆-ID2D1EllipseGeometry路径图形-ID2D1Path阅读全文

posted @ 2011-05-25 09:48 zdd 阅读(8606) | 评论 (12) 编辑

Direct2D教程(二)来看D2D世界中的Hello,World
摘要: 引子任何一门语言的第一个教程几乎都是Hello,world。我们也不例外,但是这里不是教大家打印Hello,world,而是编写一个简单的D2D绘制程序,让大家对Direct2D的程序结构及编程方法有一个基本的认识。下面我们来看如何一步一步绘制一个矩形。基本概念在开始之前,还是先介绍一些基本的概念,有助于大家理解程序,这些概念包括,Brush(画刷),Render target(渲染目标),Geometry(几何图形),它们会贯穿整个教程,所以越早介绍越好,对于有Windows GDI基础的人来说,理解这些概念很容易。没有基础的也没关系,我们可以先了解一下,随着学习的深入,会有更加深刻的认识。阅读全文

posted @ 2011-05-23 20:26 zdd 阅读(17952) | 评论 (37) 编辑

Direct2D教程(一)Direct2D已经来了,谁是GDI的终结者?
摘要: 什么是Direct2D一言以蔽之,就是Windows 7平台上的一个2D图形API,可以提供高性能,高质量的2D渲染。大多数人对Direct2D可能都比较陌生,以至于我之前在论坛上提到这个词的时候,有人竟然说你是不是写错了?可能大家比较熟悉的是Direct3D,因为D3D已经是当前游戏界的主流应用。在过去,3D世界是OpenGL与DirectX二分天下,但是由于OpenGL发展十分滞后,而且没有一个像微软这样强大的后台支柱,所以逐渐被DirectX所超越。回过头来说2D,过去Windows上的2D程序还主要基于GDI和GDI+,遗憾的是这两者都是软件实现,而Direct2D则不同,它基于Dir阅读全文

posted @ 2011-04-02 16:56 zdd 阅读(16293) | 评论 (27) 编辑

导航

公告