Pinceles de modelo de objetos XPS
En este tema, se describe cómo usar diferentes tipos de pinceles en un modelo de objetos XPS.
Los pinceles del modelo de objetos XPS se basan en la interfaz IXpsOMBrush e incluyen lo siguiente:
- Pinceles de mosaico
- Interfaz IXpsOMTileBrush
- Interfaz IXpsOMSolidColorBrush
- Interfaz IXpsOMVisualBrush
- Interfaz IXpsOMImageBrush
Pinceles de degradado
Ejemplos de código
Crear un pincel de color sólido
En el ejemplo de código siguiente, se crea un pincel de color sólido a partir de un valor de color definido en el código.
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();
Creación de un pincel visual
En el ejemplo de código siguiente, se crea un pincel a partir de un objeto visual.
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();
Creación de un pincel de imagen
Consulte el ejemplo de código en Colocar imágenes en un OM XPS.
Crear un pincel de degradado lineal
En el ejemplo de código siguiente, se crea un pincel de degradado lineal. El degradado tiene dos delimitadores de degradado.
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();
Temas relacionados