我找到了使用 VB6 绘制星的 API 函数:我需要根据数据驱动的参数为星的每个点的部分着色:因此,如果传递的参数为 1,我想为所选星的部分着色红色点,从恒星所在的圆的周长测量到其长度的 1/10;如果 2、2/10 的星点绿色等。
我找到了 API 函数CreatePolygonRgn,因此我可以更改整个特定星点的颜色,但对于如何仅使用一个 X 和 Y 参数来定义多边形感到困惑:如果我更改给定星的 X 和 Y点,我得到的结果似乎没有意义 TKIF Charles Geach
se
优秀的 vbAccelerator 提供了一些 VB6 代码。我自己没有测试过这个。请注意,这points()
是一个数组,即使看起来您只传递了第一个元素,但实际上您是在为 API 调用提供对整个数组的访问权限。CreatePolygonRgn的第一个参数不是一个点,而是一个点数组。
我希望这可以帮助您了解正在发生的事情,并且您可以编写您的明星代码。
Type POINTAPI
X As Long
Y As Long
End Type
Declare Function CreatePolygonRgn Lib "gdi32" _
(lpPoint As POINTAPI, ByVal nCount As Long, _
ByVal nPolyFillMode As Long) As Long
Sub Test()
Const ALTERNATE = 1 ' ALTERNATE and WINDING are '
Const WINDING = 2 ' constants for FillMode. '
Dim points(1 To 5) as POINTAPI
' fill in points .. '
CreatePolygonRgn(points(1), 5, WINDING)
End Sub
我不想乱用 API 调用,而是建议一个替代方案。在我看来,您将(至多)拥有 11 颗不同外观的星星(0 到 10 颗)。如果这是我的项目,我会使用您选择的图形应用程序创建 11 个图像。然后,根据变量的值,有选择地显示您想要的任何图像。