LOCAL loForm loForm = CREATEOBJECT("Pentacle") loForm.Show(1) DEFINE CLASS Pentacle AS FORM Width = 340 Height = 340 PROCEDURE Init SET CLASSLIB TO HOME() + "FFC\_GDIPLUS.VCX" ADDITIVE = CREATEOBJECT("ReportListener") ENDPROC PROCEDURE Paint THIS.DrawPentacle(170, 140, 130, 0) THIS.DrawString("WONG FEIHUNG", 0, 260, 400, 60) ENDPROC PROCEDURE DrawPentacle LPARAMETERS tnX, tnY, tnR, tnA LOCAL loGr, loPen, loBrush, loBrush2, ; lnR, laArray[11, 2], lnA, lnX, lnY, laPoints[3, 2] loGr = CREATEOBJECT("GpGraphics") loGr.CreateFromHWND(THIS.HWnd) loPen = CREATEOBJECT("GpPen", CREATEOBJECT("GpColor", 255, 0, 0)) loBrush = CREATEOBJECT("GpSolidBrush", CREATEOBJECT("GpColor", 255, 0, 0)) loBrush2 = CREATEOBJECT("GpSolidBrush", CREATEOBJECT("GpColor", 255, 120, 120)) tnA = tnA - 90 lnR = SIN(DTOR(18))*tnR/SIN(DTOR(126)) FOR i = 1 TO 5 lnA = tnA + 72*i lnX = tnR*COS(DTOR(lnA)) + tnX lnY = tnR*SIN(DTOR(lnA)) + tnY laArray[i*2 - 1, 1] = lnX laArray[i*2 - 1, 2] = lnY lnA = tnA + 36 + 72*i lnX = lnR*COS(DTOR(lnA)) + tnX lnY = lnR*SIN(DTOR(lnA)) + tnY laArray[i*2, 1] = lnX laArray[i*2, 2] = lnY ENDFOR laArray[11, 1] = tnX laArray[11, 2] = tnY FOR i = 1 TO 11 FOR j = 1 TO 11 IF ABS(i - j) = 1 OR ABS(i - j) = 9 OR INLIST(11, i, j) = .T. loGr.DrawLine(loPen, laArray[i, 1], laArray[i, 2], laArray[j, 1], laArray[j, 2]) ENDIF ENDFOR ENDFOR FOR i = 1 TO 5 laPoints[1, 1] = laArray[i*2 - 1, 1] laPoints[1, 2] = laArray[i*2 - 1, 2] laPoints[2, 1] = laArray[i*2, 1] laPoints[2, 2] = laArray[i*2, 2] laPoints[3, 1] = laArray[11, 1] laPoints[3, 2] = laArray[11, 2] loGr.FillPolygon(loBrush, @laPoints, 1, 1) laPoints[1, 1] = laArray[i*2, 1] laPoints[1, 2] = laArray[i*2, 2] laPoints[2, 1] = laArray[IIF(i = 5, 1, i*2 + 1), 1] laPoints[2, 2] = laArray[IIF(i = 5, 1, i*2 + 1), 2] laPoints[3, 1] = laArray[11, 1] laPoints[3, 2] = laArray[11, 2] loGr.FillPolygon(loBrush2, @laPoints, 1, 1) ENDFOR ENDPROC PROCEDURE DrawString LPARAMETERS tcString, tnTop, tnLeft, tnWidth, tnHeight LOCAL loGr, loBounds, loBrush, loFont, loStringFormat loGr = CREATEOBJECT("GpGraphics") loGr.CreateFromHWND(THIS.HWnd) loBounds = CREATEOBJECT("GpRectangle", tnTop, tnLeft, tnWidth, tnHeight) loBrush = CREATEOBJECT("GpSolidBrush") loBrush.Create() loFont = CREATEOBJECT("GpFont") loFont.Create("", 28, 3, 3) loStringFormat = CREATEOBJECT("GpStringFormat") loStringFormat.Create() loStringFormat.FormatFlags = 4096 loStringFormat.Alignment = 0 loStringFormat.LineAlignment = 1 loStringFormat.Trimming = 1 loBounds.W = loBounds.W - 4 loBounds.H = loBounds.H - 4 loBounds.X = loBounds.X + 4 loBounds.Y = loBounds.Y + 4 loBrush.BrushColor = CREATEOBJECT("GpColor", 120, 120, 120) loGr.DrawStringA(tcString, loFont, loBounds, loStringFormat, loBrush) loBounds.X = loBounds.X - 4 loBounds.Y = loBounds.Y - 4 loBrush.BrushColor = CREATEOBJECT("GpColor", 255, 255, 0) loGr.DrawStringA(tcString, loFont, loBounds, loStringFormat, loBrush) ENDPROC ENDDEFINE