Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique fournit un exemple d’utilisation des interfaces liées à la géométrie dans un modèle OM XPS.
Créer une géométrie rectangulaire
L’exemple de code suivant crée un objet geometry qui décrit une forme rectangulaire fermée.
HRESULT hr = S_OK;
IXpsOMVisualCollection *canvasVisuals = NULL;
IXpsOMPath *pathSidebar = NULL;
IXpsOMGeometry *xpsGeometry = NULL;
IXpsOMGeometryFigure *xpsFigure = NULL;
IXpsOMGeometryFigureCollection *xpsFigureCollection = NULL;
IXpsOMSolidColorBrush *sidebarBrush = NULL;
XPS_POINT startPoint;
XPS_RECT shape;
// define the rectangle
shape.x = 10.0f;
shape.y = 10.0f;
shape.height = 100.0f;
shape.width = 200.0f;
// set the start point
startPoint.x = shape.x;
startPoint.y = shape.y;
// define the segment types to be straight lines
XPS_SEGMENT_TYPE sidebarSegmentTypes[3] = {
XPS_SEGMENT_TYPE_LINE,
XPS_SEGMENT_TYPE_LINE,
XPS_SEGMENT_TYPE_LINE
};
// define the points of the rectangular shape
// other than the start point
FLOAT sidebarSegmentData[6] = {
shape.x, shape.y + shape.height,
shape.x + shape.width, shape.y + shape.height,
shape.x + shape.width, shape.y
};
// set the lines to be solid (not stroked)
BOOL sidebarSegmentStrokes[3] = {
FALSE, FALSE, FALSE
};
// create the geometry figure interface
hr = xpsFactory->CreateGeometryFigure( &startPoint, &xpsFigure );
// close the figure so that the last segment point is
// connected to the start point
hr = xpsFigure->SetIsClosed( TRUE );
// set the shape to be filled by the fill brush
hr = xpsFigure->SetIsFilled( TRUE );
// set the segments using the information defined above
hr = xpsFigure->SetSegments(
3,
6,
sidebarSegmentTypes,
sidebarSegmentData,
sidebarSegmentStrokes);
// create a geometry using the figure just created
hr = xpsFactory->CreateGeometry(&xpsGeometry);
// get a pointer to the figure collection
hr = xpsGeometry->GetFigures(&xpsFigureCollection);
// and add the figure of the rectangle to the geometry
hr = xpsFigureCollection->Append(xpsFigure);
Pour plus d’informations sur l’ajout de segments à une figure géométrique, consultez les exemples de code de la méthode IXpsOMGeometryFigure ::GetSegmentData, et IXpsOMGeometryFigure ::SetSegments, méthode rubriques de référence.
Rubriques connexes