Windows2003-3790/windows/advcore/gdiplus/test/functest/cregions.cpp
2020-09-30 16:53:55 +02:00

68 lines
1.8 KiB
C++

/******************************Module*Header*******************************\
* Module Name: CRegions.cpp
*
* This file contains the code to support the functionality test harness
* for GDI+. This includes menu options and calling the appropriate
* functions for execution.
*
* Created: 05-May-2000 - Jeff Vezina [t-jfvez]
*
* Copyright (c) 2000 Microsoft Corporation
*
\**************************************************************************/
#include "CRegions.h"
#include <math.h>
CRegions::CRegions(BOOL bRegression)
{
strcpy(m_szName,"Regions");
m_bRegression=bRegression;
}
CRegions::~CRegions()
{
}
void CRegions::Draw(Graphics *g)
{
REAL width = 2; // Pen width
PointF points[5];
REAL s, c, theta;
REAL pi = 3.1415926535897932f;
PointF orig((int)(TESTAREAWIDTH/2.0f), (int)(TESTAREAHEIGHT/2.0f));
theta = -pi/2;
// Create a star shape.
for(INT i = 0; i < 5; i++)
{
s = sinf(theta);
c = cosf(theta);
points[i].X = (int)(125.0f/250.0f*TESTAREAWIDTH)*c + orig.X;
points[i].Y = (int)(125.0f/250.0f*TESTAREAHEIGHT)*s + orig.Y;
theta += 0.8f*pi;
}
Color orangeColor(128, 255, 180, 0);
SolidBrush orangeBrush(orangeColor);
GraphicsPath* path = new GraphicsPath(FillModeAlternate);
// Path* path = new GraphicsPath(Winding);
path->AddPolygon(points, 5);
Color blackColor(0, 0, 0);
SolidBrush blackBrush(blackColor);
Pen blackPen(&blackBrush, width);
Region * region = new Region(path);
g->FillRegion(&orangeBrush, region); // There is a BUG!
// g->FillGraphicsPath(&orangeBrush, path); // Fill path works fine.
blackPen.SetLineJoin(LineJoinMiter);
g->DrawPath(&blackPen, path);
delete path;
delete region;
}