1

我找到了使用 VB6 绘制星的 API 函数:我需要根据数据驱动的参数为星的每个点的部分着色:因此,如果传递的参数为 1,我想为所选星的部分着色红色点,从恒星所在的圆的周长测量到其长度的 1/10;如果 2、2/10 的星点绿色等。

我找到了 API 函数CreatePolygonRgn,因此我可以更改整个特定星点的颜色,但对于如何仅使用一个 X 和 Y 参数来定义多边形感到困惑:如果我更改给定星的 X 和 Y点,我得到的结果似乎没有意义 TKIF Charles Geach
se

4

2 回答 2

1

优秀的 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
于 2009-08-20T12:32:27.250 回答
0

我不想乱用 API 调用,而是建议一个替代方案。在我看来,您将(至多)拥有 11 颗不同外观的星星(0 到 10 颗)。如果这是我的项目,我会使用您选择的图形应用程序创建 11 个图像。然后,根据变量的值,有选择地显示您想要的任何图像。

于 2009-08-20T23:35:03.150 回答