【问题标题】:VB6: Colour portions of points of a starVB6:星点的颜色部分
【发布时间】:2009-08-20 09:42:53
【问题描述】:

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

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

【问题讨论】:

    标签: api vb6 colors polygon region


    【解决方案1】:

    优秀的 vbAccelerator 提供some VB6 code。我自己没有测试过这个。请注意,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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-09-03
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        • 2016-05-24
        • 2016-08-09
        • 1970-01-01
        • 2020-11-28
        • 1970-01-01
        相关资源
        最近更新 更多