GradientFillDraw

2D_Draw ››
Parent Previous Next

GradientFillDraw

Синтаксис

Function GradientFillDraw(ByVal x As Long, ByVal y As Long,ByVal w As Long, ByVal h As Long,ByVal Rbegin As Long,ByVal Gbegin As Long,ByVal Bbegin As Long,ByVal REnd As Long,ByVal GEnd As Long,ByVal BEnd As Long, ByVal GOR_VERT As bool=0)As Integer

Описание

Функция позволяет строить градиенты. Для визуального построения цветов градиентов, ниже я указал пример программы. То есть вы можете подобрать нужный цвет градиента, и его размеры , а потом попросту щелкнуть по кнопке GetFunction и в буфере обмена будет готовая функция с нужными параметрами цвета и размеров, останется только внести текст в код программы. Так же можно скопировать по отдельности параметры цвета или размеров, достаточно просто щелкнуть по текстовому гаджету (для тех кто будет использовать API функцию GradientFill вместо библиотечной GradientFillDraw )

Параметры

x,y,w,h - начальные координаты и размеры градиента

Rbegin , Gbegin , Bbegin - насыщенности красного, зеленого и синего цвета от начальных координат градиента (от 0 до 65535)

REnd , GEnd , BEnd - насыщенности красного, зеленого и синего цвета от конечных координат градиента (от 0 до 65535)

GOR_VERT - флаг, может быть:
    0 - горизонтальный градиент
    1 - вертикальный градиент

Платформы

Windows , Linux

Пример

#Include "window9.bi"
Var hwnd=OpenWindow("",100,100,440,160):CenterWindow(hwnd)
UpdateInfoXserver
WindowStartDraw(hwnd,,,,,1)
  GradientFillDraw(10,10,200,100,&hE7CA,&h4A16,&h63C2,&h489E,&h4727,&hB183,0)
  GradientFillDraw(215,10,200,100,&h0,&hC02E,&hE074,&h0,&hFADD,&h3703,1)
StopDraw
Do : Loop until WaitEvent= EventClose

Результат

Пример программы для визуальной установки градиента:

#Include "window9.bi"
Dim Shared As HWND hwnd,hwnd1
Dim Shared As Integer ev,act1,act2,BOOLBOOL,VERT_GOR,b=10
Dim As String st,func_text
hwnd= OpenWindow("Draw",100,100,800,600)
hwnd1= OpenWindow("Draw",100,100,800,300)
ScrollBarGadget(1,10,10,400,20,0,784)
ScrollBarGadget(2,10,40,400,20,0,562)
ButtonGadget(25,660,70,100,30,"Get Hex Value")
ButtonGadget(26,660,30,100,30,"Get Dec Value")
CheckBoxGadget(27,680,160,100,30,"Vert")
ButtonGadget(28,660,110,100,30,"Get Function")
StringGadget(29,660,220,50,20,"X=0",SS_CENTER Or ES_NUMBER)
StringGadget(30,720,220,50,20,"Y=0",SS_CENTER Or ES_NUMBER)
For a As Integer=1 To 8
If a>2 Then ScrollBarGadget(a,10,b,400,20,0,65535)
Read st
TextGadget(a+8,420,b,100,20,st)
TextGadget(a+16,540,b,100,20)
b+=30
Next
function Size_() as integer
Static mm(8) As Integer
For a As Integer=1 To 8
 If mm(a)<>GetScrollGadgetPos(a) Then
  mm(a)=GetScrollGadgetPos(a)
  If BOOLBOOL=0 Then
   SetGadgetText(a+16,Str(mm(a)))
  Else
   SetGadgetText(a+16,"&h" & Hex(mm(a)))
  EndIf
 EndIf
Next
return true
End function
Sub Update()
#Ifdef __FB_WIN32__
Dim As RECT re
re.left=0
re.top=0
re.right=Val(GetGadgetText(29))
re.bottom=600
InvalidateRect(hwnd,@re,1)
re.left=0
re.top=0
re.right=800
re.bottom=Val(GetGadgetText(30))
InvalidateRect(hwnd,@re,1)
#else
gtk_widget_queue_draw_area(hwnd , 0,0,Val(GetGadgetText(29)),600)
gtk_widget_queue_draw_area(hwnd , 0,0,800,Val(GetGadgetText(30)))
#EndIf  
End Sub
function sub_()  as Integer
var x = Val(GetGadgetText(29))
var y = Val(GetGadgetText(30))
WindowStartDraw(hwnd,x,y,800,600,1)
boxDraw(0,0,800-x,600-y, &hf0f0f0 , &hf0f0f0 )
GradientFillDraw(0,0,GetScrollGadgetPos(1),GetScrollGadgetPos(2),GetScrollGadgetPos(3),GetScrollGadgetPos(4),GetScrollGadgetPos(5),GetScrollGadgetPos(6),GetScrollGadgetPos(7),GetScrollGadgetPos(8),VERT_GOR)
StopDraw
return true
End function
SetTimer(hwnd1,1,30,Cast(Any Ptr,@sub_))
SetTimer(hwnd1,2,20,Cast(Any Ptr,@Size_))
setScrollGadgetPos(1,534)
setScrollGadgetPos(2,282)
setScrollGadgetPos(3,38870)
setScrollGadgetPos(7,38870)
Do
ev=WaitEvent
If ev=EventGadget Then
 Select Case EventNumber
  Case 17 To 24
   SetClipBoardText(GetGadgetText(EventNumber))
  Case 25
   For a As Integer=1 To 8
    SetGadgetText(a+16,"&h"& Hex (GetScrollGadgetPos(a)))
    BOOLBOOL=1
   Next
  Case 26
   For a As Integer=1 To 8
    SetGadgetText(a+16,""& GetScrollGadgetPos(a))
    BOOLBOOL=0
   Next
  Case 27
   VERT_GOR=GetGadgetState(27)
  Case 28
   func_text=""
   For a As Integer=1 To 8
    if a<3 then
     func_text+= "" & GetScrollGadgetPos(a)&","
    else
     func_text+="&h"& Hex (GetScrollGadgetPos(a))&","
    EndIf
   Next
   SetClipBoardText("GradientFillDraw(" & Val(GetGadgetText(29))&","&Val(GetGadgetText(30))&"," & func_text & GetGadgetState(27) & ")")
  Case 29,30
   Update
 End Select
EndIf
If ev=EventLBDown Then
 If act1=1 And GetGadgetText(29)="" Then
  SetGadgetText(29,"0")
 EndIf
 If act2=1 And GetGadgetText(30)="" Then
  SetGadgetText(30,"0")
 EndIf
 If act1=0 Then
  If IsMouseOver(GadgetID(29)) Then
   SetGadgetText(29,"")
   act1=1
  endif
 EndIf
 If act2=0 Then
  If IsMouseOver(GadgetID(30)) Then
   SetGadgetText(30,"")
   act2=1
  EndIf
 EndIf
endif
Loop until ev=EventClose
Data "width","height","Begin_R","Begin_G","Begin_B","End_R","End_G","End_B"

Результат

Created with the Personal Edition of HelpNDoc: Single source CHM, PDF, DOC and HTML Help creation