XPS OM 画笔
本主题介绍如何在 XPS OM 中使用不同类型的画笔。
XPS OM 中的画笔基于 IXpsOMBrush 接口,其中包括:
- 平铺画笔
渐变画笔
代码示例
创建纯色画笔
下面的代码示例根据代码中定义的颜色值创建纯色画笔。
HRESULT hr = S_OK;
XPS_COLOR xpsColor;
IXpsOMSolidColorBrush *brush;
// creates a solid red brush
xpsColor.colorType = XPS_COLOR_TYPE_SRGB;
xpsColor.value.sRGB.alpha = 0xFF;
xpsColor.value.sRGB.red = 0xFF;
xpsColor.value.sRGB.green = 0x00;
xpsColor.value.sRGB.blue = 0x00;
hr = xpsFactory->CreateSolidColorBrush(
&xpsColor,
NULL,
reinterpret_cast<IXpsOMSolidColorBrush**>(&brush));
// use brush
// when finished with brush, release pointer
brush->Release();
创建视觉画笔
下面的代码示例根据视觉对象创建画笔。
HRESULT hr = S_OK;
IXpsOMVisualBrush *brush;
XPS_RECT viewBoxRect = {0,0,0,0};
XPS_RECT viewPortRect = {0,0,0,0};
// set viewBoxRect to define the portion of the visual to use
// as the brush.
//
// set viewPortRect to define the location and size of the
// the brush in the destination
//
// create the brush
hr = xpsFactory->CreateVisualBrush (
&viewBoxRect,
&viewPortRect,
reinterpret_cast<IXpsOMVisualBrush**>(&brush));
// assign the visual object
// brushVisual points to a visual
// that is defined outside of this example
hr = brush->SetVisualLocal (brushVisual);
// use brush
// when finished with brush, release pointer
brush->Release();
创建图像画笔
请参阅将图像放置在 XPS OM 中中的代码示例。
创建线性渐变画笔
下面的代码示例创建线性渐变画笔。 渐变有两个渐变停止点。
HRESULT hr = S_OK;
XPS_COLOR xpsColorStop;
IXpsOMGradientStop *xpsGradientStop1, *xpsGradientStop2;
IXpsOMLinearGradientBrush *brush;
XPS_POINT startPoint, endPoint;
// define the start color
xpsColorStop.colorType = XPS_COLOR_TYPE_SRGB;
xpsColorStop.value.sRGB.alpha = 0xFF;
xpsColorStop.value.sRGB.red = 0xE4;
xpsColorStop.value.sRGB.green = 0x3B;
xpsColorStop.value.sRGB.blue = 0x2F;
// create a gradient stop by setting the color and location
// for the beginning of the gradient
hr = xpsFactory->CreateGradientStop(
&xpsColorStop,
NULL,
0.0f,
&xpsGradientStop1);
startPoint.x = 375.75f;
startPoint.y = 18.0f;
// define the end color
xpsColorStop.colorType = XPS_COLOR_TYPE_SRGB;
xpsColorStop.value.sRGB.alpha = 0xFF;
xpsColorStop.value.sRGB.red = 0xEF;
xpsColorStop.value.sRGB.green = 0x79;
xpsColorStop.value.sRGB.blue = 0x2F;
// create a gradient stop by setting the color and location
// for the end of the gradient
hr = xpsFactory->CreateGradientStop(
&xpsColorStop,
NULL,
1.0f,
&xpsGradientStop2);
endPoint.x = 375.75f;
endPoint.y = 134.6f;
// create the brush
hr = xpsFactory->CreateLinearGradientBrush(
xpsGradientStop1,
xpsGradientStop2,
&startPoint,
&endPoint,
&brush);
// release gradient stops after creating brush
xpsGradientStop1->Release();
xpsGradientStop2->Release();
// when finished with brush, release pointer to brush
brush->Release();
相关主题