VB6: Цветные части точек звезды - PullRequest
0 голосов
/ 20 августа 2009

Я нашел API-функции для рисования звезды с использованием VB6: мне нужно закрасить участки каждой точки звезды в соответствии с параметрами, управляемыми данными: таким образом, если переданный параметр равен 1, я хочу закрасить часть выбранная точка звезды красная до 1/10 ее длины, измеренной от окружности круга, вокруг которого построена звезда; если 2, 2/10-ые звездочки указывают зеленый цвет и т. д.

Я нашел функцию API CreatePolygonRgn , поэтому я могу изменить цвет всей конкретной точки звезды, но не могу понять, как можно определить многоугольник, используя только один параметр X и Y: если я изменить X и Y для данной точки звезды, я получаю результаты, которые, кажется, не имеют смысла TKIF Чарльз Гич
се

Ответы [ 2 ]

1 голос
/ 20 августа 2009

Превосходный vbAccelerator дает некоторый код VB6 . Я не проверял это сам. Имейте в виду, что points() - это массив, и хотя он выглядит , как будто вы передаете только первый элемент, вы фактически предоставляете вызов API для массива whole . Первый аргумент 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
0 голосов
/ 21 августа 2009

Вместо того, чтобы возиться с вызовами API, я хотел бы предложить альтернативу. Для меня это звучит так, как будто у вас будет (самое большее) 11 различных звезд (от 0 до 10). Если бы это был мой проект, я бы создал 11 изображений с помощью графического приложения на ваш выбор. Затем, в зависимости от значения переменной, выборочно покажите, какое изображение вы хотите.

...