PolygonDrawA

2D_DrawA ››
Parent Previous Next

PolygonDrawA

Синтаксис

Sub PolygonDrawA(ByVal Points As Any ptr,ByVal countPoints As Integer,ByVal ColorPen As integer=&hff000000,ByVal flagcolorBK As Integer=1,ByVal ColorBk As integer=&hff000000,ByVal brushPen as Any Ptr=0,byval brushBk as Any Ptr=0,ByVal widthPen As Single=1,ByVal fillmode As Integer=0)

Описание

Используется для рисования многоугольников с автоматическим соединением начальной и конечной вершин

Параметры

Points - массив типа PointF с точками

countPoints - кол-во точек

ColorPen - цвет рамки многоугольника

flagcolorBK - флаг, отвечающий за заполнение цветом многоугольника, может быть:
0 - не заполнять цветом
1 - заполнять цветом, указанным в параметре ColorBk
2 - заполнять с помощью кисти, указанным в параметре brush

ColorBk - цвет заполнения многоугольника

brushPen - кисть для заполнения рамки многоугольника (может быть создана функцией CreateBrushA (градиэнт или текстура)). Если в параметре будет 0, то используется ColorPen

brushBk - кисть для заполнения многоугольника (может быть создана функцией CreateBrushA (градиэнт или текстура))

widthPen - ширина рамки многоугольника

fillmode - режим заполнения внутренних областей ( подробнее ). В Linux этот флаг игнорируется, всегда полная заливка. В Windows может быть:
FillModeAlternate= 0
FillModeWinding=1

Платформы

Windows , Linux

Пример (демонстрирует оба режима FillModeAlternate и FillModeWinding)

#Include "window9.bi"
Dim As Any Ptr Gpbitmap=Create_ImageA(500,270)
Dim As Hbitmap bmp
Dim As HWND hw
#ifdef __FB_WIN32__
Dim As PointF Points(4)
#else
Dim As GDKPoint Points(4)
#endif
Dim As Single dAngle
For u  As single=0.5 To 1.5 Step 1.0
for i As Integer=0 to 4
  dAngle = (i * 0.8 - 0.5) * 3.1415926535
  points(i).x=(200 *(u + 0.48 * Cos(dAngle)))
  points(i).y=(200 *(0.50 + 0.48 * Sin(dAngle)))
Next
ImageStartDrawA(Gpbitmap)
PolygonDrawA(@Points(0),5,0,1,&hFF00FF00,,,20,Int(u))
StopDrawA
Next
hw=OpenWindow("GDI+",100,100,420,230)
CenterWindow(hw)
bmp=CreateHBitmapFromGpBitmap(GpBitmap,&hf0f0F0)
ImageGadget(1, 0,0,420,230, bmp)
Do:Loop Until WaitEvent()= eventclose
FreeGpBitmap(Gpbitmap):Free_Image(bmp)

Результат

Created with the Personal Edition of HelpNDoc: Easily create Help documents