D2D的资源介绍

1画刷BRUSH


画笔用其输出来“绘制”区域,不同的画笔具有不同的输出类型。Direct2D 提供了四种画笔:。(以下部分内容来自msdn上的解释书呆子

  • ID2D1SolidColorBrush 用纯色绘制区域
  • ID2D1LinearGradientBrush 用线性渐变绘制区域
  • ID2D1RadialGradientBrush 用径向渐变绘制区域
  • ID2D1BitmapBrush 用位图绘制区域
  • D2D的资源介绍_第1张图片

 

2几何对象Geometry

几何(Geometry)对象

历数微软的图形开发技术,几何(Geometry)对象就不停的在发展,不断完善,越来越强大。

在GDI和GDI+中,区域(Region)和路径(Path)就是几何(Geometry)对象的雏形。WPF中已经有专门几何(Geometry)对象的概念,包含有直线几何(LineGeometry)、矩形几何(RectangleGeometry)、椭圆几何(EllipseGeometry)、路径几何(PathGeometry)、流几何(StreamGeometry)(轻量级的PathGeometry)、合并几何(CombinedGeometry)、几何组(GeometryGroup)等

 

在Direct2D更加完善了几何(Geometry)对象的概念。

在Direct2D中,所有的几何(Geometry)对象都继承自基类Geometry类(是个抽象类)。包括:矩形几何(RectangleGeometry)、圆角矩形几何(RoundedRectangleGeometry)、椭圆几何(EllipseGeometry)、路径几何(PathGeometry)、几何组(GeometryGroup)、变换几何(TransformedGeometry)。

这些几何(Geometry)对象都不能直接创建,必须通过D2DFactory对象的相应的方法创建。

计算方法:

计算几何(Geometry)对象的面积:ComputerArea

计算几何(Geometry)对象线段展开的长度:ComputerLength

计算几何(Geometry)对象上指定距离处的点和正切矢量:ComputerPointAtLength

获得几何(Geometry)对象的边界:GetBounds

获得几何(Geometry)对象按指定笔画宽度和样式加宽并按指定矩阵转换后的边界:GetWidentdBounds

 

判定方法:

判定几何(Geometry)对象是否包含指定点:FillContainsPoint

判定几何(Geometry)对象的描边笔画是否包含指定的点:StrokeContainsPoint

判定该几何(Geometry)对象和指定几何(Geometry)对象的交集的类型的结果:CompareWithGeometry

 

运算方法:

该几何(Geometry)对象和指定几何(Geometry)对象的合并结果:CombineWithGeometry

按照指定笔画加宽几何(Geometry)对象:Widen

 

优化方法:

获得几何(Geometry)对象的轮廓:Outline

获得几何(Geometry)对象的简化版本(仅包含直线和三次贝塞尔曲线):Simplify

获得几何(Geometry)对象的简化成一组三角形:Tesselate


3 Geometry, Bitmap, Text

Geometry-几何图形,Bitmap-位图, Text-文本。这三者是要绘制的内容,几何图形包括矩形,圆角矩形,椭圆等,当然Direct2D除了可以绘制几何图形之外,还可绘制位图和文本,D2D没有提供加载位图的接口,所以对位图的加载都是使用WIC来实现的。而对文本的绘制则是通过DirectWrite来实现的,DirectWrite在分类上属于D2D,但是目前已经独立成一个组件了。为了便于理解以上三者之间的关系,大家可以想象一个画家,他在作画的时候,都需要那些东西呢?第一,他需要一支画笔用来绘制,这相当于上面的画刷,第二,他需要一张纸或者一张画布用来承载绘制的东西,这就是上面的Render target,最后,他想画什么呢?山水?花鸟?亦或是人物?这就是绘制的内容,相当于上面的几何图形,位图或者文本


4 rendertaget渲染目标

渲染目标是从ID2D1RenderTarget 接口继承的资源。其用于创建绘制的资源,并执行实际的绘制操作。你可以通过以下方式使用多种类型的渲染目标来呈现图形:。(以下部分内容来自msdn上的解释书呆子

  • ID2D1HwndRenderTarget 对象将内容呈现到窗口。
  • ID2D1DCRenderTarget 对象呈现到 GDI 设备上下文。
  • 位图呈现器目标对象将内容呈现到屏幕外位图。
  • DXGI 呈现器目标对象呈现到用于 Direct3D 的 DXGI 图面。    

 5 资源resource

  所谓的资源,指的是视频内存或系统内存的某种分配。

在Direct2D中主要有两种资源,一是设备无关的资源,另一个是设备相关的资源。所谓设备无关,是指该资源不与特定的硬件渲染设备相关联,所以设备无关的资源都分配在CPU中,而设备相关是指该资源与特定的渲染硬件相关联,比如当硬件加速可用时,使用GPU渲染,否则使用CPU渲染。

设备无关的资源

  • ID2D1DrawingStateBlock
  • ID2D1Factory
  • ID2D1Geometry及继承自它的接口
  • ID2D1GeometrySink和ID2D1SimplifiedGeometrySink
  • ID2D1StrokeStyle

除了ID2D1RenderTarget之外,所有使用ID2D1Factory创建的资源都是设备无关的。

设备相关的资源

  • ID2D1Brush及继承自它的接口
  • ID2D1Layer
  • ID2D1RenderTarget及继承自它的接口

一般来说,使用ID2D1RenderTarget创建的资源都是设备相关的。





你可能感兴趣的:(D2D)