CRenderTarget 类
ID2D1RenderTarget 的包装器。
语法
class CRenderTarget : public CObject;
成员
公共构造函数
名称 | 描述 |
---|---|
CRenderTarget::CRenderTarget | 构造 CRenderTarget 对象。 |
CRenderTarget::~CRenderTarget | 析构函数。 在销毁呈现目标对象时调用。 |
公共方法
受保护方法
名称 | 描述 |
---|---|
CRenderTarget::VerifyResource | 验证 CD2DResource 对象的有效性;如果对象尚不存在,则创建该对象。 |
公共运算符
“属性” | 描述 |
---|---|
CRenderTarget::operator ID2D1RenderTarget* | 返回 ID2D1RenderTarget 接口 |
受保护的数据成员
名称 | 描述 |
---|---|
CRenderTarget::m_lstResources | 指向 CD2DResource 对象的指针列表。 |
CRenderTarget::m_pRenderTarget | 指向 ID2D1RenderTarget 对象的指针。 |
CRenderTarget::m_pTextFormatDefault | 指向包含默认文本格式的 CD2DTextFormat 对象的指针。 |
继承层次结构
要求
标头:afxrendertarget.h
CRenderTarget::~CRenderTarget
析构函数。 在销毁呈现目标对象时调用。
virtual ~CRenderTarget();
CRenderTarget::Attach
将现有呈现目标接口附加到对象
void Attach(ID2D1RenderTarget* pRenderTarget);
参数
pRenderTarget
现有呈现目标接口。 不能为 NULL
CRenderTarget::BeginDraw
启动对此呈现目标的绘图。
void BeginDraw();
CRenderTarget::Clear
将绘图区域清除为指定的颜色。
void Clear(D2D1_COLOR_F color);
参数
color
将绘制区域清除到的颜色。
CRenderTarget::COLORREF_TO_D2DCOLOR
将 GDI 颜色和 alpha 值转换为 D2D1_COLOR_F 对象。
static D2D1_COLOR_F COLORREF_TO_D2DCOLOR(
COLORREF color,
int nAlpha = 255);
参数
color
RGB 值。
nAlpha
返回值
D2D1_COLOR_F 值。
CRenderTarget::CreateCompatibleRenderTarget
创建一个新的位图呈现目标,以便在与当前呈现目标兼容的中间离屏绘图过程中使用。
BOOL CreateCompatibleRenderTarget(
CBitmapRenderTarget& bitmapTarget,
CD2DSizeF sizeDesired = CD2DSizeF(0., 0.),
CD2DSizeU sizePixelDesired = CD2DSizeU(0, 0),
D2D1_PIXEL_FORMAT* desiredFormat = NULL,
D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options = D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE);
参数
bitmapTarget
此方法返回时,包含指向新位图呈现目标的指针的地址。 此参数在传递时尚未初始化。
sizeDesired
如果新的呈现目标与原始呈现目标不同,则为新呈现目标所需的大小(以设备无关像素为单位);否则为 NULL。 有关详细信息,请参阅“备注”部分。
sizePixelDesired
如果新的呈现目标与原始呈现目标不同,则为新呈现目标所需的大小(以像素为单位);否则为 NULL。 有关详细信息,请参阅“备注”部分。
desiredFormat
新呈现目标所需的像素格式和 alpha 模式,或者为 NULL。 如果像素格式设置为 DXGI_FORMAT_UNKNOWN 或此参数为 null,则新呈现目标使用与原始呈现目标相同的像素格式。 如果 alpha 模式为 D2D1_ALPHA_MODE_UNKNOWN 或此参数为 NULL,则新呈现目标的 alpha 模式默认为D2D1_ALPHA_MODE_PREMULTIPLIED。 若要了解支持的像素格式,请参阅“支持的像素格式和 Alpha 模式”。
options
指定新呈现目标是否必须与 GDI 兼容的值。
返回值
如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。
CRenderTarget::CRenderTarget
构造 CRenderTarget 对象。
CRenderTarget();
CRenderTarget::Destroy
删除一个或多个资源
BOOL Destroy(BOOL bDeleteResources = TRUE);
参数
bDeleteResources
如果 bDeleteResources 为 TRUE,则自动销毁 m_lstResources 中的所有资源。
返回值
如果该方法成功,它会返回 TRUE。 否则,返回 FALSE
CRenderTarget::Detach
从对象中拆离呈现目标接口
ID2D1RenderTarget* Detach ();
返回值
指向拆离的呈现目标接口的指针。
CRenderTarget::DrawBitmap
绘制指定的 IDWriteTextLayout 对象描述的格式化文本。
void DrawBitmap(
CD2DBitmap* pBitmap,
const CD2DRectF& rectDest,
float fOpacity = 1.0,
D2D1_BITMAP_INTERPOLATION_MODE interpolationMode = D2D1_BITMAP_INTERPOLATION_MODE_LINEAR,
const CD2DRectF* pRectSrc = NULL);
参数
pBitmap
要呈现的位图。
rectDest
绘制位图的区域在呈现目标的坐标空间中的大小和位置(以设备无关像素为单位)。 如果矩形排序不正确,则不会绘制任何内容,但呈现目标不会进入错误状态。
fOpacity
一个介于 0.0f 和 1.0f(含)之间的值,它指定应用于位图的不透明度值;该值与位图内容的 alpha 值相乘。
interpolationMode
绘图操作缩放或旋转位图时要使用的内插模式。
pRectSrc
要绘制的位图中的区域在位图坐标空间中的大小和位置(以设备无关像素为单位)。
CRenderTarget::DrawEllipse
使用指定的笔划样式绘制指定椭圆的轮廓。
void DrawEllipse(
const CD2DEllipse& ellipse,
CD2DBrush* pBrush,
FLOAT fStrokeWidth = 1.0,
ID2D1StrokeStyle* strokeStyle = NULL);
参数
ellipse
要绘制的椭圆的位置和半径(以设备无关像素为单位)。
pBrush
用于绘制椭圆轮廓的画笔。
fStrokeWidth
椭圆笔划的粗细。 笔划以椭圆轮廓为中心。
strokeStyle
要应用于椭圆轮廓的笔划样式;若要绘制实心笔划,则为 NULL。
CRenderTarget::DrawGeometry
使用指定的笔划样式绘制指定几何图形的轮廓。
void DrawGeometry(
CD2DGeometry* pGeometry,
CD2DBrush* pBrush,
FLOAT fStrokeWidth = 1.0,
ID2D1StrokeStyle* strokeStyle = NULL);
参数
pGeometry
要绘制的几何图形。
pBrush
用于绘制几何图形笔划的画笔。
fStrokeWidth
几何图形笔划的粗细。 笔划以几何图形轮廓为中心。
strokeStyle
要应用于几何图形轮廓的笔划样式;若要绘制实心笔划,则为 NULL。
CRenderTarget::DrawGlyphRun
绘制指定的字形。
void DrawGlyphRun(
const CD2DPointF& ptBaseLineOrigin,
const DWRITE_GLYPH_RUN& glyphRun,
CD2DBrush* pForegroundBrush,
DWRITE_MEASURING_MODE measuringMode = DWRITE_MEASURING_MODE_NATURAL);
参数
ptBaseLineOrigin
字形基线的原点(以设备无关像素为单位)。
glyphRun
要呈现的字形。
pForegroundBrush
用于绘制指定字形的画笔。
measuringMode
一个值,该值指示在设置格式时如何使用字形指标来度量文本。 默认值为 DWRITE_MEASURING_MODE_NATURAL。
CRenderTarget::DrawLine
使用指定的笔划样式在两个指定的点之间绘制一条线。
void DrawLine(
const CD2DPointF& ptFrom,
const CD2DPointF& ptTo,
CD2DBrush* pBrush,
FLOAT fStrokeWidth = 1.0,
ID2D1StrokeStyle* strokeStyle = NULL);
参数
ptFrom
线条的起点(以设备无关像素为单位)。
ptTo
线条的终点(以设备无关像素为单位)。
pBrush
用于绘制线条笔划的画笔。
fStrokeWidth
大于或等于 0.0f 的值,用于指定笔划的宽度。 如果未指定此参数,则默认为 1.0f。 笔划以线条为中心。
strokeStyle
要绘制的笔划样式;若要绘制实线,则为 NULL。
CRenderTarget::DrawRectangle
绘制具有指定维度和笔划样式的矩形的轮廓。
void DrawRectangle(
const CD2DRectF& rectangle,
CD2DBrush* pBrush,
FLOAT fStrokeWidth = 1.0,
ID2D1StrokeStyle* strokeStyle = NULL);
参数
rectangle
要绘制的矩形的维度(以设备无关像素为单位)
pBrush
用于绘制矩形笔划的画笔
fStrokeWidth
大于或等于 0.0f 的值,用于指定矩形笔划的宽度。 笔划以矩形轮廓为中心。
strokeStyle
要绘制的笔划样式;若要绘制实心笔划,则为 NULL。
CRenderTarget::DrawRoundedRectangle
使用指定的笔划样式绘制指定圆角矩形的轮廓。
void DrawRoundedRectangle(
const CD2DRoundedRect& rectRounded,
CD2DBrush* pBrush,
FLOAT fStrokeWidth = 1.0,
ID2D1StrokeStyle* strokeStyle = NULL);
参数
rectRounded
要绘制的圆角矩形的维度(以设备无关像素为单位)。
pBrush
用于绘制圆角矩形轮廓的画笔。
fStrokeWidth
圆角矩形笔划的宽度。 笔划以圆角矩形轮廓为中心。 默认值为 1.0f。
strokeStyle
圆角矩形笔划的样式;若要绘制实心笔划,则为 NULL。 默认值为 NULL。
CRenderTarget::DrawText
使用 IDWriteTextFormat 对象提供的格式信息绘制指定文本。
void DrawText(
const CString& strText,
const CD2DRectF& rectangle,
CD2DBrush* pForegroundBrush,
CD2DTextFormat* textFormat = NULL,
D2D1_DRAW_TEXT_OPTIONS options = D2D1_DRAW_TEXT_OPTIONS_NONE,
DWRITE_MEASURING_MODE measuringMode = DWRITE_MEASURING_MODE_NATURAL);
参数
strText
指向要绘制的 Unicode 字符数组的指针。
rectangle
在其中绘制文本的区域的大小和位置。
pForegroundBrush
用于绘制文本的画笔。
textFormat
一个对象,描述要绘制的文本的格式详细信息,例如字体、字号和流方向。
options
一个值,指示是否应将文本对齐到像素边界,以及是否应将文本剪裁到布局矩形。 默认值为 D2D1_DRAW_TEXT_OPTIONS_NONE,指示文本应对齐像素边界且不得将文本剪裁到布局矩形。
measuringMode
一个值,该值指示在设置格式时如何使用字形指标来度量文本。 默认值为 DWRITE_MEASURING_MODE_NATURAL。
CRenderTarget::DrawTextLayout
绘制指定的 IDWriteTextLayout 对象描述的格式化文本。
void DrawTextLayout(
const CD2DPointF& ptOrigin,
CD2DTextLayout* textLayout,
CD2DBrush* pBrushForeground,
D2D1_DRAW_TEXT_OPTIONS options = D2D1_DRAW_TEXT_OPTIONS_NONE);
参数
ptOrigin
用设备无关像素描述的点,其中绘制了 textLayout 描述的文本的左上角。
textLayout
要绘制的格式化文本。 会忽略不从 ID2D1Resource 继承的任何绘图效果。 如果有绘图效果从不是画笔的 ID2D1Resource 继承,则此方法将失败,并且呈现目标处于错误状态。
pBrushForeground
用于在 textLayout 中绘制任何文本的画笔,该文本尚未与画笔关联作为绘图效果(由 IDWriteTextLayout::SetDrawingEffect 方法指定)。
options
一个值,指示是否应将文本对齐到像素边界,以及是否应将文本剪裁到布局矩形。 默认值为 D2D1_DRAW_TEXT_OPTIONS_NONE,指示文本应对齐像素边界且不得将文本剪裁到布局矩形。
CRenderTarget::EndDraw
结束对呈现目标的绘图操作,并指示当前错误状态和相关标记。
HRESULT EndDraw();
返回值
如果该方法成功,则它会返回 S_OK。 否则,它将返回 HRESULT 错误代码。
CRenderTarget::FillEllipse
绘制指定椭圆的内部。
void FillEllipse(
const CD2DEllipse& ellipse,
CD2DBrush* pBrush);
参数
ellipse
要绘制的椭圆的位置和半径(以设备无关像素为单位)。
pBrush
用于绘制椭圆内部的画笔。
CRenderTarget::FillGeometry
绘制指定几何图形的内部。
void FillGeometry(
CD2DGeometry* pGeometry,
CD2DBrush* pBrush,
CD2DBrush* pOpacityBrush = NULL);
参数
pGeometry
要绘制的几何图形。
pBrush
用于绘制几何图形内部的画笔。
pOpacityBrush
要应用于几何图形的不透明蒙板;如果没有不透明蒙板,则为 NULL。 如果指定不透明蒙版(opacityBrush 参数),则画笔必须为 ID2D1BitmapBrush,其 x 和 y 扩展模式设置为 D2D1_EXTEND_MODE_CLAMP。 有关详细信息,请参阅“备注”部分。
CRenderTarget::FillMesh
绘制指定网格的内部。
void FillMesh(
CD2DMesh* pMesh,
CD2DBrush* pBrush);
参数
pMesh
要绘制的网格。
pBrush
用于绘制网格的画笔。
CRenderTarget::FillOpacityMask
将指定位图描述的不透明蒙版应用到画笔,并使用该画笔绘制呈现目标的区域。
void FillOpacityMask(
CD2DBitmap* pOpacityMask,
CD2DBrush* pBrush,
D2D1_OPACITY_MASK_CONTENT content,
const CD2DRectF& rectDest,
const CD2DRectF& rectSrc);
参数
pOpacityMask
要绘制的椭圆的位置和半径(以设备无关像素为单位)。
pBrush
用于绘制由 destinationRectangle 指定的呈现目标区域的画笔。
content
不透明蒙板包含的内容类型。 该值用于确定混合不透明蒙板的颜色空间。
rectDest
要绘制的呈现目标的区域(以设备无关像素为单位)。
rectSrc
要用作不透明蒙版的位图区域(以设备无关像素为单位)。
CRenderTarget::FillRectangle
绘制指定矩形的内部。
void FillRectangle(
const CD2DRectF& rectangle,
CD2DBrush* pBrush);
参数
rectangle
要绘制的矩形的维度(以设备无关像素为单位)。
pBrush
用于绘制矩形内部的画笔。
CRenderTarget::FillRoundedRectangle
绘制指定圆角矩形的内部。
void FillRoundedRectangle(
const CD2DRoundedRect& rectRounded,
CD2DBrush* pBrush);
参数
rectRounded
要绘制的圆角矩形的维度(以设备无关像素为单位)。
pBrush
用于绘制圆角矩形内部的画笔。
CRenderTarget::Flush
执行所有挂起的绘图命令。
void Flush(
D2D1_TAG* tag1 = NULL,
D2D1_TAG* tag2 = NULL);
参数
tag1
包含导致错误的绘图操作的标记;如果没有错误,则为 0。 此参数在传递时尚未初始化。
tag2
包含导致错误的绘图操作的标记;如果没有错误,则为 0。 此参数在传递时尚未初始化。
CRenderTarget::GetAntialiasMode
检索非文本绘图操作的当前抗锯齿模式。
D2D1_ANTIALIAS_MODE GetAntialiasMode() const;
返回值
非文本绘图操作的当前抗锯齿模式。
CRenderTarget::GetDpi
返回呈现目标的每英寸点数 (DPI)
CD2DSizeF GetDpi() const;
返回值
呈现目标的每英寸点数 (DPI)。
CRenderTarget::GetMaximumBitmapSize
获取呈现目标支持的任一位图维度的最大大小,以设备相关单位(像素)表示
UINT32 GetMaximumBitmapSize() const;
返回值
呈现目标支持的任一位图尺寸的最大大小(以像素为单位)
CRenderTarget::GetPixelFormat
检索呈现目标的像素格式和 alpha 模式
D2D1_PIXEL_FORMAT GetPixelFormat() const;
返回值
呈现目标的像素格式和 alpha 模式
CRenderTarget::GetPixelSize
返回呈现目标的大小(以设备像素为单位)
CD2DSizeU GetPixelSize() const;
返回值
呈现目标的大小(以设备像素为单位)
CRenderTarget::GetRenderTarget
返回 ID2D1RenderTarget 接口
ID2D1RenderTarget* GetRenderTarget();
返回值
指向 ID2D1RenderTarget 接口的指针;如果对象尚未初始化,则为 NULL。
CRenderTarget::GetSize
返回呈现目标的大小(以设备无关像素为单位)
CD2DSizeF GetSize() const;
返回值
呈现目标的当前大小(以设备无关像素为单位)
CRenderTarget::GetTags
获取后续绘图操作的标签。
void GetTags(
D2D1_TAG* tag1 = NULL,
D2D1_TAG* tag2 = NULL) const;
参数
tag1
包含后续绘图操作的第一个标签。 此参数在传递时尚未初始化。 如果指定 NULL,则不检索此参数的值。
tag2
包含后续绘图操作的第二个标签。 此参数在传递时尚未初始化。 如果指定 NULL,则不检索此参数的值。
CRenderTarget::GetTextAntialiasMode
获取文本和字形绘图操作的当前抗锯齿模式。
D2D1_TEXT_ANTIALIAS_MODE GetTextAntialiasMode() const;
返回值
文本和字形绘图操作的当前抗锯齿模式。
CRenderTarget::GetTextRenderingParams
检索呈现目标的当前文本呈现选项。
void GetTextRenderingParams(IDWriteRenderingParams** textRenderingParams);
参数
textRenderingParams
当此方法返回时,textRenderingParams 包含指向呈现目标当前文本呈现选项的指针的地址。
CRenderTarget::GetTransform
获取呈现目标的当前转换。
void GetTransform(D2D1_MATRIX_3X2_F* transform);
参数
transform
此方法返回时,包含呈现目标的当前转换。 此参数在传递时尚未初始化。
CRenderTarget::IsSupported
指示呈现目标是否支持指定的属性
BOOL IsSupported(const D2D1_RENDER_TARGET_PROPERTIES& renderTargetProperties) const;
参数
renderTargetProperties
要测试的呈现目标属性
返回值
如果此呈现目标支持指定的呈现目标属性,则为 TRUE;否则为 FALSE
CRenderTarget::IsValid
检查资源有效性
BOOL IsValid() const;
返回值
如果资源有效,则为 TRUE;否则为 FALSE。
CRenderTarget::m_lstResources
指向 CD2DResource 对象的指针列表。
CObList m_lstResources;
CRenderTarget::m_pRenderTarget
指向 ID2D1RenderTarget 对象的指针。
ID2D1RenderTarget* m_pRenderTarget;
CRenderTarget::m_pTextFormatDefault
指向包含默认文本格式的 CD2DTextFormat 对象的指针。
CD2DTextFormat* m_pTextFormatDefault;
CRenderTarget::operator ID2D1RenderTarget*
返回 ID2D1RenderTarget 接口
operator ID2D1RenderTarget*();
返回值
指向 ID2D1RenderTarget 接口的指针;如果对象尚未初始化,则为 NULL。
CRenderTarget::PopAxisAlignedClip
从呈现目标中移除最后一个轴对齐剪裁。 调用此方法后,剪裁不再应用于后续绘图操作。
void PopAxisAlignedClip();
CRenderTarget::PopLayer
停止将绘图操作重定向到最后一个 PushLayer 调用指定的层。
void PopLayer();
CRenderTarget::PushAxisAlignedClip
从呈现目标中移除最后一个轴对齐剪裁。 调用此方法后,剪裁不再应用于后续绘图操作。
void PushAxisAlignedClip(
const CD2DRectF& rectClip,
D2D1_ANTIALIAS_MODE mode = D2D1_ANTIALIAS_MODE_PER_PRIMITIVE);
参数
rectClip
剪裁区域的大小和位置(以设备无关像素为单位)。
mode
抗锯齿模式,用于绘制具有子像素边界的剪裁矩形的边缘,并将剪裁与场景内容混合。 调用 PopAxisAlignedClip 方法时执行一次混合,该混合并不适用于图层中的每个图元。
CRenderTarget::PushLayer
将指定的层添加到呈现目标,以便在调用 PopLayer 之前接收所有后续绘图操作。
void PushLayer(
const D2D1_LAYER_PARAMETERS& layerParameters,
CD2DLayer& layer);
参数
layerParameters
图层的内容边界、几何蒙版、不透明度、不透明蒙版和抗锯齿选项。
layer
接收后续绘图操作的图层。
CRenderTarget::RestoreDrawingState
将呈现目标的绘图状态设置为指定的 ID2D1DrawingStateBlock 的状态。
void RestoreDrawingState(ID2D1DrawingStateBlock& drawingStateBlock);
参数
drawingStateBlock
呈现目标的新绘图状态。
CRenderTarget::SaveDrawingState
将当前绘图状态保存到指定的 ID2D1DrawingStateBlock。
void SaveDrawingState(ID2D1DrawingStateBlock& drawingStateBlock) const;
参数
drawingStateBlock
此方法返回时,包含呈现目标的当前绘图状态。 必须先初始化此参数,然后再将其传递给方法。
CRenderTarget::SetAntialiasMode
设置呈现目标的抗锯齿模式。 抗锯齿模式应用于所有后续绘图操作,文本和字形绘图操作除外。
void SetAntialiasMode(D2D1_ANTIALIAS_MODE antialiasMode);
参数
antialiasMode
用于后续绘图操作的抗锯齿模式。
CRenderTarget::SetDpi
设置呈现目标的每英寸点数 (DPI)。
void SetDpi(const CD2DSizeF& sizeDPI);
参数
sizeDPI
一个大于或等于零的值,它指定呈现目标的水平/垂直 DPI。
CRenderTarget::SetTags
指定后续绘图操作的标签。
void SetTags(
D2D1_TAG tag1,
D2D1_TAG tag2);
参数
tag1
要应用于后续绘图操作的标签。
tag2
要应用于后续绘图操作的标签。
CRenderTarget::SetTextAntialiasMode
指定用于后续文本和字形绘图操作的抗锯齿模式。
void SetTextAntialiasMode(D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode);
参数
textAntialiasMode
用于后续文本和字形绘图操作的抗锯齿模式。
CRenderTarget::SetTextRenderingParams
指定要应用于所有后续文本和字形绘图操作的文本呈现选项。
void SetTextRenderingParams(IDWriteRenderingParams* textRenderingParams = NULL);
参数
textRenderingParams
要应用于所有后续文本和字形绘图操作的文本呈现选项;若要清除当前文本呈现选项,则为 NULL。
CRenderTarget::SetTransform
将指定的转换应用于呈现目标,替换现有转换。 所有后续的绘图操作都发生在转换后的空间中。
void SetTransform(const D2D1_MATRIX_3X2_F* transform);
void SetTransform(const D2D1_MATRIX_3X2_F& transform);
参数
transform
要应用于呈现目标的转换。
CRenderTarget::VerifyResource
验证 CD2DResource 对象的有效性;如果对象尚不存在,则创建该对象。
BOOL VerifyResource(CD2DResource* pResource);
参数
pResource
指向 CD2DResource 对象的指针。
返回值
如果对象有效,则为 TRUE;否则为 FALSE。