YOU CAN CODE!

 

With The Case Of UCanCode.net  Release The Power OF  Visual C++ !   HomeProducts | PurchaseSupport | Downloads  
Download Evaluation
Pricing & Purchase?
E-XD++Visual C++/ MFC Products
Overview
Features Tour 
Electronic Form Solution
Visualization & HMI Solution
Power system HMI Solution
CAD Drawing and Printing Solution

Bar code labeling Solution
Workflow Solution

Coal industry HMI Solution
Instrumentation Gauge Solution

Report Printing Solution
Graphical modeling Solution
GIS mapping solution

Visio graphics solution
Industrial control SCADA &HMI Solution
BPM business process Solution

Industrial monitoring Solution
Flowchart and diagramming Solution
Organization Diagram Solution

Graphic editor Source Code
UML drawing editor Source Code
Map Diagramming Solution

Architectural Graphic Drawing Solution
Request Evaluation
Purchase
ActiveX COM Products
Overview
Download
Purchase
Technical Support
  General Q & A
Discussion Board
Contact Us

Links

Get Ready to Unleash the Power of UCanCode .NET

 


UCanCode Software focuses on general application software development. We provide complete solution for developers. No matter you want to develop a simple database workflow application, or an large flow/diagram based system, our product will provide a complete solution for you. Our product had been used by hundreds of top companies around the world!

"100% source code provided! Free you from not daring to use components because of unable to master the key technology of components!"


GDI Example: Add and Draw US flag with E-XD++, five star shape

With E-XD++ you can create any diagram quickly and easily, for example, if you want to create a new diagram  like below, E-XD++ will be the best component to build and UML Diagram Drawing Tool:

It is tested on Visual Studio 6.0, Visual Studio.net 2013 and Visual Studio.net 2022.

Example codes as below:

CFORectShape *CTestMDIView::AddRect(CRect rc)
{
CFORectShape *pRect = new CFORectShape;
pRect->AddRef();
pRect->Create(rc, "");
pRect->UpdateComp();
GetCurrentModel()->GetShapes()->AddTail(pRect);
pRect->Release();

return pRect;
}

CFOFiveStarShape *CTestMDIView::AddStar(CRect rc)
{
CFOFiveStarShape *pStar = new CFOFiveStarShape;
pStar->AddRef();
pStar->Create(rc, "");
pStar->UpdateComp();
GetCurrentModel()->GetShapes()->AddTail(pStar);
pStar->Release();

return pStar;
}

#define SIN72 0.95106
#define COS72 0.30902
#define SIN144 0.58779
#define COS144 -0.80902
#define STARSIZE 0.67 // scale factor for the size of the stars
void CTestMDIView::GenUSFlag(RECT * pRect)
{
int x0 = pRect->left;
int y0 = pRect->top;
int x1 = pRect->right;
int y1 = pRect->bottom;
int cx = x1 - x0;
int cy = y1 - y0;
int i, j, x, y, xx, yy;
int cxStarBox, cyStarBox;

CRect rc(x0, y0, x1 + 1, y1 + 1);
AddRect(rc);

// Draw the seven red stripes.
for (i = 0; i < 13; i++)
{
if ((i & 1) == 0)
{
rc = CRect(x0,
y0 + (i * cy) / 13,
x1 + 1,
y0 + ((i + 1) * cy) / 13 + 1);
CFORectShape *pRectShape = AddRect(rc);
pRectShape->SetBkColor(RGB(255,0,0));
}
}

// Draw blue box.
// Size it so that it covers two fifths of the flag length and
// the top seven stripes vertically.
cxStarBox = (2 * cx) / 5;
cyStarBox = (7 * cy) / 13 + 1;

rc = CRect(x0,
y0,
x0 + cxStarBox,
y0 + cyStarBox);
CFORectShape *pRectShape = AddRect(rc);
pRectShape->SetBkColor(RGB(0, 0, 128));

// Shrink the blue box rect a bit to give some border around the stars.
x0 += cxStarBox / 25;
y0 += cyStarBox / 25;
cxStarBox *= 23;
cxStarBox /= 25;
cyStarBox *= 23;
cyStarBox /= 25;
y = y0;
// Now, divide the box into a grid of 11 x 9 squares and place a star
// in every other square, like on a checker board.
for (j = 1; j <= 9; j++)
{
yy = y0 + (j * cyStarBox) / 9;
x = x0;
for (i = 1; i <= 11; i++)
{
xx = x0 + (i * cxStarBox) / 11;
// Determine 'black' or 'white' square status by checking to see
// if the sum of 'i' and 'j' is odd or even.
// This ensures that the square colors of each row are always
// staggered regardless of whether there is an odd or even number
// of squares in each row.
if (((i + j) & 1) == 0)
{
// Get the width and height of the current square.
int w = xx - x;
int h = yy - y;
// Use the smaller of the two (width or height) as a basis
// for the radius of the star.
double r = (w < h) ? (double)w * STARSIZE : (double)h * STARSIZE;
// Find the center of the current square.
int centerX = (x + xx) / 2;
int centerY = (y + yy) / 2;
POINT pts[5];

// Calculate the actual points for the stars by rotating the
// radius around the center point using the pre-computed
// sines & cosines.
pts[0].x = centerX;
pts[0].y = centerY - (int)(r);
pts[1].x = centerX + (int)(r * SIN144);
pts[1].y = centerY - (int)(r * COS144);
pts[2].x = centerX - (int)(r * SIN72);
pts[2].y = centerY - (int)(r * COS72);
pts[3].x = centerX + (int)(r * SIN72);
pts[3].y = pts[2].y;
pts[4].x = centerX - (int)(r * SIN144);
pts[4].y = pts[1].y;

rc = CFODrawHelper::GetBoundRect(pts, 5);
// Finally, draw the filled polygon.
AddStar(rc);
}
x = xx;
}
y = yy;
}
}

void CTestMDIView::OnInitialUpdate()
{
SetCurrentModel(GetDocument()->m_pDataModel);
CFODrawView::OnInitialUpdate();

CRect rc = GetCurrentModel()->GetPagePosition();
rc.bottom = rc.right;
rc.DeflateRect(20,20,20,20);

// AddRect(rc);

GenUSFlag(&rc);
}

 

Copyright ?1998-2022 UCanCode.Net Software , all rights reserved.
Other product and company names herein may be the trademarks of their respective owners.

Please direct your questions or comments to webmaster@ucancode.net