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