How to draw a line and write the text in the coordinates?
- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
How to draw a line and write the text in the coordinates?
How to draw a straight line segment of a given thickness and color of the coordinates of start and end points of the segment?
How to write text to a graphical object at the specified position of the specified type font, size and color and determine its length in pixels?
How to write text to a graphical object at the specified position of the specified type font, size and color and determine its length in pixels?
Re: How to draw a line and write the text in the coordinates
Look at DCGRA* commands, Gra*() functions, and DC_GraQueryTextBox().
The eXpress train is coming - and it has more cars.
- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
Re: How to draw a line and write the text in the coordinates
What library's ch-file to connect to use DRAWTEXTBOX?


- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
Re: How to draw a line and write the text in the coordinates
It seems to work, then what I wanted:

But the program itself I do not like the fact that it is run from one function and other functions a lot. Would like to see something like that worked right out of the main challenges certain functions without the other.
[/size]
More will be written on themselves axes, legend, and buttons control recording the image or copy it to the clipboard

But the program itself I do not like the fact that it is run from one function and other functions a lot. Would like to see something like that worked right out of the main challenges certain functions without the other.
Code: Select all
*************************************
PROCEDURE AppSys
// Рабочий стол остается окном приложения
RETURN
*************************************
PROCEDURE Main()
LOCAL GetList := {}, oStatic
LOCAL oPS, oDevice
DC_IconDefault(1000)
PRIVATE aAttr // Массив атрибутов отображаемых линий
PRIVATE nEvent, mp1, mp2, oXbp // Переменные анализа событий
N_Graf = 15 // Кол-во графиков
N_Znach = 30 // Кол-во значений в графиках
PRIVATE aValues[N_Graf, N_Znach] // Матрица значений
*** Присвоить значения отображаемой матрице
FOR g=1 TO N_Graf
FOR x=1 TO N_Znach
aValues[g, x] = ( g - 1 ) + SQRT(x)
NEXT
NEXT
@0, 10 DCSAY "ТИПОВОЕ РЕШЕНИЕ ДЛЯ ПОСТРОЕНИЯ СЕМЕЙСТВА ГРАФИКОВ ФУНКЦИЙ РАЗНОЙ ТОЛЩИНЫ И ЦВЕТА"
@ 2,1 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 148,39 ; // Размер окна для отображения графика
OBJECT oStatic;
EVAL {|| _PresSpace(oStatic, N_Graf, N_Znach, aValues) }
DCREAD GUI ;
TITLE "Типовое решение по отображению семейства графиков"; // Надпись на окне графика
FIT ;
BUTTONS DCGUI_BUTTON_EXIT
RETURN
*************************************************
STATIC FUNCTION _PresSpace( oStatic, N_Graf, N_Znach, aValues )
LOCAL oPS, oDevice
PUBLIC X_MaxW := 1024, Y_MaxW := 768 // Размер графического окна в пикселях
oPS := XbpPresSpace():new() // Create a PS
oDevice := oStatic:winDevice() // Get the device context
oPS:create( oDevice ) // Link device context to PS
oPS:SetViewPort( { 0, 0, X_MaxW, Y_MaxW } )
oStatic:paint := {|mp1,mp2,obj| mp1 := LC_MultiLine( oPS, N_Graf, N_Znach, aValues ) }
RETURN NIL
*******************************************************
STATIC FUNCTION LC_MultiLine(oPS, N_Graf, N_Znach, aValues)
****** Поиск макс и мин значений функций
Y_MinF = +99999999 // Минимальноее значение Y отображаемой функции
Y_MaxF = -99999999 // Максимальное значение Y отображаемой функции
FOR g=1 TO N_Graf
FOR x=1 TO N_Znach
Y_MinF = MIN(Y_MinF, aValues[g, x])
Y_MaxF = MAX(Y_MaxF, aValues[g, x])
NEXT
NEXT
PRIVATE LY := 10+15*N_Graf // Зона под областью графика для легенды (зависит от N_Graf)
* PRIVATE LY := 0 // Зона под областью графика для легенды (зависит от N_Graf)
PRIVATE X0 := 70, Y0 := 70 + LY // Начало координат по осям X и Y
PRIVATE W_Wind := X_MaxW - X0 // Ширина окна для самого графика
PRIVATE H_Wind := Y_MaxW - Y0 // Высота окна для самого графика (зависит от N_Graf)
PRIVATE NX := 10, NY := 10 // Кол-во меток и надписей по осям X и Y
PRIVATE Kx := W_Wind / N_Znach // Коэффициент масштабирования по оси X: преобразует аргумент функции в номер пикселя по оси X
PRIVATE Ky := H_Wind / ( Y_MaxF-Y_MinF + 1 ) // Коэффициент масштабирования по оси Y: преобразует значение функции в номер пикселя по оси Y
***** Нарисовать оси координат *******************
aAttr := Array( GRA_AL_COUNT ) // Массив для атрибутов линии
aAttr [ GRA_AL_TYPE ] := GRA_LINETYPE_DEFAULT
aAttr [ GRA_AL_COLOR ] := 1 // Задать цвет линии
aAttr [ GRA_AL_WIDTH ] := 2 // Задать толщину линии
graSetAttrLine( oPS, aAttr ) // Установить атрибуты
GraLine( oPS, {X0 , Y0 }, {X0+W_Wind, Y0 } ) // Нарисовать ось X
GraLine( oPS, {X0 , Y0 }, {X0 , Y0+H_Wind} ) // Нарисовать ось Y
GraLine( oPS, {X0 , Y0+H_Wind}, {X0+W_Wind, Y0+H_Wind} ) // Нарисовать границу рамки изображения вверху параллельно оси X
GraLine( oPS, {X0+W_Wind, Y0 }, {X0+W_Wind, Y0+H_Wind} ) // Нарисовать границу рамки изображения справа параллельно оси Y
aAttr := ARRAY( GRA_AM_COUNT ) // Массив для атрибутов маркеров
aAttr [ GRA_AM_SYMBOL ] := GRA_MARKSYM_PLUS
GraSetAttrMarker( oPS, aAttr )
aAttr := Array( GRA_AL_COUNT ) // Массив для атрибутов линии
aAttr [ GRA_AL_TYPE ] := GRA_LINETYPE_DOT
aAttr [ GRA_AL_COLOR ] := 1 // Задать цвет линии
aAttr [ GRA_AL_WIDTH ] := 1 // Задать толщину линии
graSetAttrLine( oPS, aAttr ) // Установить атрибуты
*** Надписать метки на оси X *********************
DX = N_Znach/NX // Диапазон значений x, через которое ставить метку
FOR x=1 TO N_Znach STEP DX
nX := X0 + x*Kx
GraMarker ( oPS, { nX, Y0 } )
GraStringAt( oPS, { nX, Y0-25 }, ALLTRIM(STR(x,21,3)) )
GraLine( oPS, { nX, Y0 }, {nX, Y0+H_Wind} ) // Нарисовать пунктирную линию уровня x
NEXT
*** Надписать метки на оси Y *********************
DY = (Y_MaxF-Y_MinF+1)/NY // Диапазон значений y, через которое ставить метку
FOR y = Y_MinF TO Y_MaxF STEP DY
nY := Y0 + y*Ky
GraMarker ( oPS, { X0 , nY } )
GraStringAt( oPS, { X0-45, nY }, ALLTRIM(STR(y,21,3)) )
GraLine( oPS, { X0 , nY }, {X0+W_Wind, nY} ) // Нарисовать пунктирную линию уровня y
NEXT
***** Рисование линий ***************************************************
aAttr := Array( GRA_AL_COUNT ) // Массив для атрибутов линии
aAttr[ GRA_AL_TYPE ] := GRA_LINETYPE_DEFAULT
FOR g=1 TO N_Graf
aAttr[ GRA_AL_COLOR ] := g // Задать цвет линии
aAttr[ GRA_AL_WIDTH ] := g // Задать толщину линии
graSetAttrLine( oPS, aAttr ) // установить атрибуты
FOR x=2 TO N_Znach
X1 := X0 + (x-1)*Kx
Y1 := Y0 + aValues[g, x-1]*Ky
X2 := X0 + x * Kx
Y2 := Y0 + aValues[g, x ]*Ky
GraLine( oPS, { X1, Y1 }, { X2, Y2 } )
NEXT
NEXT
***** Нарисовать оси координат *******************
aAttr := Array( GRA_AL_COUNT ) // Массив для атрибутов линии
aAttr [ GRA_AL_TYPE ] := GRA_LINETYPE_DEFAULT
aAttr [ GRA_AL_COLOR ] := 1 // Задать цвет линии
aAttr [ GRA_AL_WIDTH ] := 2 // Задать толщину линии
graSetAttrLine( oPS, aAttr ) // Установить атрибуты
GraLine( oPS, {X0 , Y0 }, {X0+W_Wind, Y0 } ) // Нарисовать ось X
GraLine( oPS, {X0 , Y0 }, {X0 , Y0+H_Wind} ) // Нарисовать ось Y
GraLine( oPS, {X0 , Y0+H_Wind}, {X0+W_Wind, Y0+H_Wind} ) // Нарисовать границу рамки изображения вверху параллельно оси X
GraLine( oPS, {X0+W_Wind, Y0 }, {X0+W_Wind, Y0+H_Wind} ) // Нарисовать границу рамки изображения справа параллельно оси Y
RETURN NIL
More will be written on themselves axes, legend, and buttons control recording the image or copy it to the clipboard
- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
Re: How to draw a line and write the text in the coordinates
How to make a label vertically upwards (for the axis label Y)? I tried to do like as described in the documentation, but I did not succeed. And yet, is there any analogue of the LEN (), for graphics functions that specifies the length of the graphic labels in pixels (given the attributes string, font, etc.)
Code: Select all
oFont := XbpFont():new():create("12.Helvetica")
GraSetFont( oPS ,oFont )
AxName = "Name of the axis X"
aAttr := ARRAY( GRA_AS_COUNT )
aAttr [ GRA_AS_DIRECTION ] := GRA_CHDIRN_LEFTRIGHT
GraSetAttrString( oPS, aAttr )
GraStringAt( oPS, { X0+X0/2-LEN(AxName)/2, Y0-50 }, AxName ) // Надпись оси Х
AyName = "Name of the axis Y"
aAttr := ARRAY( GRA_AS_COUNT )
aAttr [ GRA_AS_DIRECTION ] := GRA_CHDIRN_BOTTOMTOP
GraSetAttrString( oPS, aAttr )
GraStringAt( oPS, { X0-65, Y0+Y0/2-LEN(AYName)/2 }, AyName ) // Надпись оси y
Re: How to draw a line and write the text in the coordinates
Look at GraQueryTextBox().
The eXpress train is coming - and it has more cars.
- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
Re: How to draw a line and write the text in the coordinates
It seems almost everyone got what they wanted. What remains is the control button.

[/size]

Code: Select all
*************************************
PROCEDURE AppSys
// Рабочий стол остается окном приложения
RETURN
*************************************
PROCEDURE Main()
LOCAL GetList := {}, oStatic
LOCAL oPS, oDevice
DC_IconDefault(1000)
SET COLLATION TO SYSTEM // Руссификация
PRIVATE aAttr // Массив атрибутов отображаемых линий
PRIVATE nEvent, mp1, mp2, oXbp // Переменные анализа событий
N_Graf = 5 // Кол-во графиков
N_Znach = 30 // Кол-во значений в графиках
PRIVATE aValues[N_Graf, N_Znach] // Матрица значений
PRIVATE aGraName[N_Graf] // Массив наименований функций
*** Присвоить значения отображаемой матрице
FOR g=1 TO N_Graf
aGraName[g] = "Name of schedule N°"+ALLTRIM(STR(g))
FOR x=1 TO N_Znach
aValues[g, x] = ( g - 1 ) + SQRT(x)
NEXT
NEXT
@0, 0 DCSAY "TYPICAL SOLUTIONS FOR CONSTRUCTING A FAMILY OF GRAPHS OF FUNCTIONS OF DIFFERENT THICKNESS AND COLORS" FONT ("22.ArialBold") SIZE 0
@ 2,1 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 148,39 ; // Размер окна для отображения графика
OBJECT oStatic;
EVAL {|| _PresSpace(oStatic, N_Graf, N_Znach, aValues) }
DCREAD GUI ;
TITLE "Типовое решение по отображению семейства графиков"; // Надпись на окне графика
FIT ;
BUTTONS DCGUI_BUTTON_EXIT
RETURN
*************************************************
STATIC FUNCTION _PresSpace( oStatic, N_Graf, N_Znach, aValues )
LOCAL oPS, oDevice
PUBLIC X_MaxW := 1024, Y_MaxW := 768 // Размер графического окна в пикселях
oPS := XbpPresSpace():new() // Create a PS
oDevice := oStatic:winDevice() // Get the device context
oPS:create( oDevice ) // Link device context to PS
oPS:SetViewPort( { 0, 0, X_MaxW, Y_MaxW } )
oStatic:paint := {|mp1,mp2,obj| mp1 := LC_MultiLine( oPS, N_Graf, N_Znach, aValues ) }
RETURN NIL
*******************************************************
STATIC FUNCTION LC_MultiLine(oPS, N_Graf, N_Znach, aValues)
****** Поиск макс и мин значений функций
Y_MinF = +99999999 // Минимальноее значение Y отображаемой функции
Y_MaxF = -99999999 // Максимальное значение Y отображаемой функции
FOR g=1 TO N_Graf
FOR x=1 TO N_Znach
Y_MinF = MIN(Y_MinF, aValues[g, x])
Y_MaxF = MAX(Y_MaxF, aValues[g, x])
NEXT
NEXT
PRIVATE LY := 10+15*N_Graf // Зона под областью графика для легенды (зависит от N_Graf)
PRIVATE X0 := 75, Y0 := 75 + LY // Начало координат по осям X и Y
PRIVATE W_Wind := X_MaxW - X0 // Ширина окна для самого графика
PRIVATE H_Wind := Y_MaxW - Y0 // Высота окна для самого графика (зависит от N_Graf)
PRIVATE NX := 10, NY := 10 // Кол-во меток и надписей по осям X и Y
PRIVATE Kx := W_Wind / N_Znach // Коэффициент масштабирования по оси X: преобразует аргумент функции в номер пикселя по оси X
PRIVATE Ky := H_Wind / ( Y_MaxF-Y_MinF + 1 ) // Коэффициент масштабирования по оси Y: преобразует значение функции в номер пикселя по оси Y
***** Нарисовать оси координат *******************
aAttr := Array( GRA_AL_COUNT ) // Массив для атрибутов линии
aAttr [ GRA_AL_TYPE ] := GRA_LINETYPE_DEFAULT
aAttr [ GRA_AL_COLOR ] := 1 // Задать цвет линии
aAttr [ GRA_AL_WIDTH ] := 2 // Задать толщину линии
graSetAttrLine( oPS, aAttr ) // Установить атрибуты
GraLine( oPS, {X0 , Y0 }, {X0+W_Wind, Y0 } ) // Нарисовать ось X
GraLine( oPS, {X0 , Y0 }, {X0 , Y0+H_Wind} ) // Нарисовать ось Y
GraLine( oPS, {X0 , Y0+H_Wind}, {X0+W_Wind, Y0+H_Wind} ) // Нарисовать границу рамки изображения вверху параллельно оси X
GraLine( oPS, {X0+W_Wind, Y0 }, {X0+W_Wind, Y0+H_Wind} ) // Нарисовать границу рамки изображения справа параллельно оси Y
aAttr := ARRAY( GRA_AM_COUNT ) // Массив для атрибутов маркеров
aAttr [ GRA_AM_SYMBOL ] := GRA_MARKSYM_PLUS
GraSetAttrMarker( oPS, aAttr )
aAttr := Array( GRA_AL_COUNT ) // Массив для атрибутов линии
aAttr [ GRA_AL_TYPE ] := GRA_LINETYPE_DOT
aAttr [ GRA_AL_COLOR ] := 1 // Задать цвет линии
aAttr [ GRA_AL_WIDTH ] := 1 // Задать толщину линии
graSetAttrLine( oPS, aAttr ) // Установить атрибуты
*** Надписать метки на оси X *********************
DX = N_Znach/NX // Диапазон значений x, через которое ставить метку
FOR x=1 TO N_Znach STEP DX
nX := X0 + x*Kx
GraMarker ( oPS, { nX, Y0 } )
GraStringAt( oPS, { nX, Y0-25 }, ALLTRIM(STR(x,21,3)) )
GraLine( oPS, { nX, Y0 }, {nX, Y0+H_Wind} ) // Нарисовать пунктирную линию уровня x
NEXT
*** Надписать метки на оси Y *********************
DY = (Y_MaxF-Y_MinF+1)/NY // Диапазон значений y, через которое ставить метку
FOR y = Y_MinF TO Y_MaxF STEP DY
nY := Y0 + y*Ky
GraMarker ( oPS, { X0 , nY } )
GraStringAt( oPS, { X0-45, nY }, ALLTRIM(STR(y,21,3)) )
GraLine( oPS, { X0 , nY }, {X0+W_Wind, nY} ) // Нарисовать пунктирную линию уровня y
NEXT
***** Рисование линий ***************************************************
aAttr := Array( GRA_AL_COUNT ) // Массив для атрибутов линии
aAttr[ GRA_AL_TYPE ] := GRA_LINETYPE_DEFAULT
FOR g=1 TO N_Graf
aAttr[ GRA_AL_COLOR ] := g // Задать цвет линии
aAttr[ GRA_AL_WIDTH ] := g // Задать толщину линии
graSetAttrLine( oPS, aAttr ) // установить атрибуты
FOR x=2 TO N_Znach
X1 := X0 + (x-1)*Kx
Y1 := Y0 + aValues[g, x-1]*Ky
X2 := X0 + x * Kx
Y2 := Y0 + aValues[g, x ]*Ky
GraLine( oPS, { X1, Y1 }, { X2, Y2 } )
NEXT
NEXT
***** Нарисовать оси координат **********************************
aAttr := Array( GRA_AL_COUNT ) // Массив для атрибутов линии
aAttr [ GRA_AL_TYPE ] := GRA_LINETYPE_DEFAULT
aAttr [ GRA_AL_COLOR ] := 1 // Задать цвет линии
aAttr [ GRA_AL_WIDTH ] := 2 // Задать толщину линии
graSetAttrLine( oPS, aAttr ) // Установить атрибуты графической линии
GraLine( oPS, {X0 , Y0 }, {X0+W_Wind, Y0 } ) // Нарисовать ось X
GraLine( oPS, {X0 , Y0 }, {X0 , Y0+H_Wind} ) // Нарисовать ось Y
GraLine( oPS, {X0 , Y0+H_Wind}, {X0+W_Wind, Y0+H_Wind} ) // Нарисовать границу рамки изображения вверху параллельно оси X
GraLine( oPS, {X0+W_Wind, Y0 }, {X0+W_Wind, Y0+H_Wind} ) // Нарисовать границу рамки изображения справа параллельно оси Y
****** Легенда ***************************************************
Offset = -60
Interval = 15
***** Нарисовать рамку легенды
aAttr := Array( GRA_AL_COUNT ) // Массив для атрибутов линии
aAttr [ GRA_AL_TYPE ] := GRA_LINETYPE_DEFAULT
aAttr [ GRA_AL_COLOR ] := 1 // Задать цвет линии
aAttr [ GRA_AL_WIDTH ] := 1 // Задать толщину линии
graSetAttrLine( oPS, aAttr ) // Установить атрибуты графической линии
X1 := X0
Y1 := Y0 + Offset
X2 := X0 + W_Wind
Y2 := Y0 + Offset - N_Graf * Interval - 15
GraLine( oPS, {X1, Y1 }, {X2, Y1 } ) // Нарисовать ось X
GraLine( oPS, {X1, Y1 }, {X1, Y2 } ) // Нарисовать ось Y
GraLine( oPS, {X1, Y2 }, {X2, Y2 } ) // Нарисовать границу рамки изображения вверху параллельно оси X
GraLine( oPS, {X2, Y1 }, {X2, Y2 } ) // Нарисовать границу рамки изображения справа параллельно оси Y
FOR g=1 TO N_Graf
aAttr[ GRA_AL_COLOR ] := g // Задать цвет линии
aAttr[ GRA_AL_WIDTH ] := g // Задать толщину линии
graSetAttrLine( oPS, aAttr ) // Установить атрибуты
FOR x=2 TO N_Znach
X1 := X0 + 20
Y1 := Y0 + Offset - g * Interval
X2 := X0 + 300
Y2 := Y0 + Offset - g * Interval
GraLine( oPS, { X1, Y1 }, { X2, Y2 } )
NEXT
GraStringAt( oPS, { X2+20, Y2-4 }, aGraName[g] )
NEXT
****** Надписи координатных осей *********************************
oFont := XbpFont():new():create("13.ArialBold")
GraSetFont( oPS ,oFont )
AxName = "Name of the axis X"
GraStringAt( oPS, { X0+W_Wind/2-8*LEN(AxName)/2, Y0-45 }, AxName ) // Надпись оси Х
AyName = "Name of the axis Y"
aMatrix := GraInitMatrix()
GraRotate( oPS, aMatrix, 90, { X0-53, Y0+H_Wind/2-8*LEN(AyName)/2 }, GRA_TRANSFORM_ADD )
oPS:setGraTransform( aMatrix, GRA_TRANSFORM_REPLACE )
GraStringAt( oPS, { X0-53, Y0+H_Wind/2-8*LEN(AyName)/2 }, AyName ) // Надпись оси Y
RETURN NIL
- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
Re: How to draw a line and write the text in the coordinates
Program to display the standard color display:
[/size]

Code: Select all
*************************************
PROCEDURE AppSys
// Рабочий стол остается окном приложения
RETURN
*************************************
PROCEDURE Main()
LOCAL GetList := {}, oStatic
LOCAL oPS, oDevice
DC_IconDefault(1000)
SET COLLATION TO SYSTEM // Руссификация
PUBLIC aColor := {} // Цвета
AADD(aColor, BD_BLUEMIST) // GraMakeRGBColor({195,238,255}) // BLUE 001
AADD(aColor, BD_PALETURQUOISE) // GraMakeRGBColor({175,238,238}) // BLUE 002
AADD(aColor, BD_PALEBLUE) // GraMakeRGBColor({140,223,255}) // BLUE 003
AADD(aColor, BD_FADEDBLUE) // GraMakeRGBColor({127,222,255}) // BLUE 004
AADD(aColor, BD_LIGHTBLUESKY) // GraMakeRGBColor({135,206,235}) // BLUE 005
AADD(aColor, BD_ISLANDBLUE) // GraMakeRGBColor({053,179,255}) // BLUE 006
AADD(aColor, BD_DODGERBLUE) // GraMakeRGBColor({030,144,255}) // BLUE 007
AADD(aColor, BD_PASTELBLUE) // GraMakeRGBColor({002,131,254}) // BLUE 008
AADD(aColor, BD_AZURE) // GraMakeRGBColor({000,127,255}) // BLUE 009
AADD(aColor, BD_ROYALBLUE) // GraMakeRGBColor({065,105,225}) // BLUE 010
AADD(aColor, BD_XBP_BLUE) // 2 // BLUE 011
AADD(aColor, BD_RICHBLUE) // GraMakeRGBColor({000,000,255}) // BLUE 012
AADD(aColor, BD_TLCDEEPBLUE) // GraMakeRGBColor({000,030,144}) // BLUE 013
AADD(aColor, BD_NAVYBLUE) // GraMakeRGBColor({000,000,128}) // BLUE 014
AADD(aColor, BD_DARKBLUE) // GraMakeRGBColor({000,000,087}) // BLUE 015
AADD(aColor, BD_MIDNIGHTBLUE) // GraMakeRGBColor({025,025,112}) // BLUE 016
AADD(aColor, BD_NIGHT) // GraMakeRGBColor({036,026,068}) // OTHER 017
AADD(aColor, BD_SKYBLUE) // GraMakeRGBColor({209,241,255}) // BLUE 018
AADD(aColor, BD_ICEBLUE) // GraMakeRGBColor({209,253,255}) // BLUE 019
AADD(aColor, BD_TLCLIGHTBLUE) // GraMakeRGBColor({198,255,255}) // BLUE 020
AADD(aColor, BD_WISPBLUE) // GraMakeRGBColor({221,226,255}) // BLUE 021
AADD(aColor, BD_BLUEHINT) // GraMakeRGBColor({208,216,255}) // BLUE 022
AADD(aColor, BD_LIGHTSTEELBLUE) // GraMakeRGBColor({202,225,255}) // BLUE 023
AADD(aColor, BD_ROCKGREY) // GraMakeRGBColor({185,211,238}) // GREY 024
AADD(aColor, BD_CLEARBLUE) // GraMakeRGBColor({156,210,255}) // BLUE 025
AADD(aColor, BD_BLUESTEEL) // GraMakeRGBColor({117,186,229}) // BLUE 026
AADD(aColor, BD_CORNFLOWERBLUE) // GraMakeRGBColor({100,149,237}) // BLUE 127
AADD(aColor, BD_TLCDARKBLUE) // GraMakeRGBColor({075,116,171}) // BLUE 028
AADD(aColor, BD_TURQUOISE) // GraMakeRGBColor({064,244,208}) // BLUE 029
AADD(aColor, BD_TLCBLUE) // GraMakeRGBColor({075,268,200}) // BLUE 030
AADD(aColor, BD_TEAL) // GraMakeRGBColor({014,255,212}) // TEAL 031
AADD(aColor, BD_AQUAMARINE) // GraMakeRGBColor({000,255,232}) // BLUE 032
AADD(aColor, BD_XBP_CYAN) // 6 // CYAN 033
AADD(aColor, BD_LIGHTBLUE) // GraMakeRGBColor({014,240,255}) // BLUE 034
AADD(aColor, BD_ICEGREEN) // GraMakeRGBColor({222,255,189}) // GREEN 035
AADD(aColor, BD_GREENFROSTING) // GraMakeRGBColor({217,255,179}) // GREEN 036
AADD(aColor, BD_GREENHINT) // GraMakeRGBColor({204,255,191}) // GREEN 137
AADD(aColor, BD_PALETEAL) // GraMakeRGBColor({188,255,211}) // TEAL 038
AADD(aColor, BD_LIGHTTEAL) // GraMakeRGBColor({165,255,210}) // TEAL 039
AADD(aColor, BD_SEAFOAM) // GraMakeRGBColor({135,255,169}) // OTHER 040
AADD(aColor, BD_PALEGREEN) // GraMakeRGBColor({118,255,171}) // GREEN 041
AADD(aColor, BD_LEDGER) // GraMakeRGBColor({152,255,153}) // GREEN 042
AADD(aColor, BD_COLDGREEN) // GraMakeRGBColor({175,255,127}) // GREEN 043
AADD(aColor, BD_WISPGREEN) // GraMakeRGBColor({175,255,118}) // GREEN 044
AADD(aColor, BD_ISLANDGREEN) // GraMakeRGBColor({135,255,101}) // GREEN 045
AADD(aColor, BD_PASTELGREEN) // GraMakeRGBColor({135,255,000}) // GREEN 046
AADD(aColor, BD_LAWNGREEN) // GraMakeRGBColor({124,252,000}) // GREEN 147
AADD(aColor, BD_RICHGREEN) // GraMakeRGBColor({151,246,096}) // GREEN 048
AADD(aColor, BD_XBP_GREEN) // 5 // GREEN 049
AADD(aColor, BD_LIGHTGREEN) // GraMakeRGBColor({054,255,134}) // GREEN 050
AADD(aColor, BD_FADEDTEAL) // GraMakeRGBColor({103,214,171}) // TEAL 051
AADD(aColor, BD_BLUEGREY) // GraMakeRGBColor({135,183,169}) // BLUE 052
AADD(aColor, BD_LIGHTSEAGREEN) // GraMakeRGBColor({032,178,170}) // GREEN 053
AADD(aColor, BD_XBP_DARKCYAN) // 13 // CYAN 054
AADD(aColor, BD_CLEARGREEN) // GraMakeRGBColor({171,212,159}) // GREEN 055
AADD(aColor, BD_EARTHGREEN) // GraMakeRGBColor({153,173,092}) // GREEN 056
AADD(aColor, BD_MUDGREEN) // GraMakeRGBColor({153,173,000}) // GREEN 157
AADD(aColor, BD_LEAFYGREEN) // GraMakeRGBColor({129,153,040}) // GREEN 058
AADD(aColor, BD_MONEYLIGHTGREY) // GraMakeRGBColor({146,163,127}) // GREEN 059
AADD(aColor, BD_MONEYLIGHTGREEN) // GraMakeRGBColor({126,152,117}) // GREEN 060
AADD(aColor, BD_ASPARAGUS) // GraMakeRGBColor({123,160,091}) // OTHER 061
AADD(aColor, BD_DANKGREEN) // GraMakeRGBColor({077,123,084}) // GREEN 062
AADD(aColor, BD_MONEYGREENGREY) // GraMakeRGBColor({054,084,056}) // GREEN 063
AADD(aColor, BD_MONEYGREEN) // GraMakeRGBColor({024,050,021}) // GREEN 064
AADD(aColor, BD_CHARTREUSE) // GraMakeRGBColor({113,198,113}) // TEAL 065
AADD(aColor, BD_EMERALDGREEN) // GraMakeRGBColor({081,200,120}) // GREEN 066
AADD(aColor, BD_DEEPGREEN) // GraMakeRGBColor({054,194,114}) // GREEN 167
AADD(aColor, BD_FORESTGREEN) // GraMakeRGBColor({034,139,034}) // GREEN 068
AADD(aColor, BD_SEAGREEN) // GraMakeRGBColor({046,139,087}) // GREEN 069
AADD(aColor, BD_DARKGREEN) // GraMakeRGBColor({000,100,000}) // GREEN 070
AADD(aColor, BD_BISQUE) // GraMakeRGBColor({255,228,196}) // OTHER 071
AADD(aColor, BD_ANTIQUEWHITE) // GraMakeRGBColor({250,235,215}) // OTHER 072
AADD(aColor, BD_BONE) // GraMakeRGBColor({249,246,210}) // OTHER 073
AADD(aColor, BD_PEACH) // GraMakeRGBColor({255,230,188}) // OTHER 074
AADD(aColor, BD_PALEGOLDENROD) // GraMakeRGBColor({238,232,170}) // OTHER 075
AADD(aColor, BD_LIGHTGOLDENROD) // GraMakeRGBColor({238,221,130}) // OTHER 076
AADD(aColor, BD_BANANA) // GraMakeRGBColor({227,207,087}) // OTHER 177
AADD(aColor, BD_BURLYWOOD) // GraMakeRGBColor({222,184,135}) // OTHER 078
AADD(aColor, BD_PERU) // GraMakeRGBColor({205,133,063}) // OTHER 079
AADD(aColor, BD_COPPER) // GraMakeRGBColor({184,115,051}) // OTHER 080
AADD(aColor, BD_BROWN) // GraMakeRGBColor({150,075,000}) // OTHER 081
AADD(aColor, BD_MILKCHOCOLATE) // GraMakeRGBColor({112,046,000}) // OTHER 082
AADD(aColor, BD_AUBURN) // GraMakeRGBColor({113,047,044}) // OTHER 083
AADD(aColor, BD_CHOCOLATE) // GraMakeRGBColor({068,000,000}) // OTHER 084
AADD(aColor, BD_DARKWHEAT) // GraMakeRGBColor({205,186,150}) // OTHER 085
AADD(aColor, BD_DARKERWHEAT) // GraMakeRGBColor({194,182,133}) // OTHER 086
AADD(aColor, BD_LAZYGREEN) // GraMakeRGBColor({204,210,158}) // GREEN 187
AADD(aColor, BD_ECRU) // GraMakeRGBColor({178,188,121}) // OTHER 088
AADD(aColor, BD_FATIGUES) // GraMakeRGBColor({153,173,109}) // OTHER 089
AADD(aColor, BD_BRASS) // GraMakeRGBColor({181,166,066}) // OTHER 090
AADD(aColor, BD_GOLDENROD) // GraMakeRGBColor({218,165,032}) // OTHER 091
AADD(aColor, BD_DARKGOLDENROD) // GraMakeRGBColor({184,134,011}) // OTHER 092
AADD(aColor, BD_LIGHTCORAL) // GraMakeRGBColor({240,128,128}) // OTHER 093
AADD(aColor, BD_LIGHTSALMON) // GraMakeRGBColor({255,160,122}) // OTHER 094
AADD(aColor, BD_KHAKI) // GraMakeRGBColor({189,183,107}) // OTHER 095
AADD(aColor, BD_DARKKHAKI) // GraMakeRGBColor({197,185,115}) // OTHER 096
AADD(aColor, BD_CLOUD) // GraMakeRGBColor({245,245,240}) // OTHER 197
AADD(aColor, BD_IVORY) // GraMakeRGBColor({252,246,229}) // OTHER 098
AADD(aColor, BD_LINEN) // GraMakeRGBColor({253,240,230}) // OTHER 099
AADD(aColor, BD_LEMONCREME) // GraMakeRGBColor({255,250,205}) // OTHER 100
AADD(aColor, BD_CREME) // GraMakeRGBColor({249,246,189}) // TAN 101
AADD(aColor, BD_EGGSHELL) // GraMakeRGBColor({252,230,201}) // OTHER 102
AADD(aColor, BD_CORNSILK) // GraMakeRGBColor({238,232,205}) // OTHER 103
AADD(aColor, BD_SAND) // GraMakeRGBColor({232,228,216}) // OTHER 104
AADD(aColor, BD_KEYLIME) // GraMakeRGBColor({175,246,084}) // OTHER 105
AADD(aColor, BD_LIME) // GraMakeRGBColor({153,235,000}) // OTHER 106
AADD(aColor, BD_RICHLIME) // GraMakeRGBColor({087,255,000}) // OTHER 107
AADD(aColor, BD_MAGENTA) // GraMakeRGBColor({205,000,205}) // OTHER 108
AADD(aColor, BD_EGGPLANT) // GraMakeRGBColor({153,000,102}) // OTHER 109
AADD(aColor, BD_MAROON) // GraMakeRGBColor({139,028,098}) // OTHER 110
AADD(aColor, BD_MANGO) // GraMakeRGBColor({255,091,039}) // OTHER 111
AADD(aColor, BD_SANDYBROWN) // GraMakeRGBColor({244,164,096}) // OTHER 112
AADD(aColor, BD_SUNSET) // GraMakeRGBColor({245,160,014}) // OTHER 113
AADD(aColor, BD_MANGOCREME) // GraMakeRGBColor({255,129,063}) // OTHER 114
AADD(aColor, BD_SALMON) // GraMakeRGBColor({250,128,114}) // OTHER 115
AADD(aColor, BD_MISTYROSE) // GraMakeRGBColor({255,228,225}) // OTHER 116
AADD(aColor, BD_MOSS) // GraMakeRGBColor({200,201,001}) // OTHER 117
AADD(aColor, BD_OFFWHITE) // GraMakeRGBColor({255,255,235}) // OTHER 118
AADD(aColor, BD_PINKSAND) // GraMakeRGBColor({255,204,220}) // OTHER 119
AADD(aColor, BD_PINKROSE) // GraMakeRGBColor({255,184,255}) // OTHER 120
AADD(aColor, BD_ORCHID) // GraMakeRGBColor({218,112,214}) // OTHER 121
AADD(aColor, BD_FUSHIA) // GraMakeRGBColor({193,084,193}) // OTHER 122
AADD(aColor, BD_INDIGO) // GraMakeRGBColor({075,000,130}) // OTHER 123
AADD(aColor, BD_PINEBARK) // GraMakeRGBColor({167,158,125}) // OTHER 124
AADD(aColor, BD_SANDSTONE) // GraMakeRGBColor({204,204,153}) // OTHER 125
AADD(aColor, BD_SANDYCORAL) // GraMakeRGBColor({214,213,189}) // OTHER 126
AADD(aColor, BD_JOURNALGREEN) // GraMakeRGBColor({220,232,210}) // GREEN 127
AADD(aColor, BD_SEASHELL) // GraMakeRGBColor({255,245,238}) // OTHER 128
AADD(aColor, BD_SNOW) // GraMakeRGBColor({255,250,255}) // OTHER 129
AADD(aColor, BD_WHEAT) // GraMakeRGBColor({245,222,179}) // OTHER 130
AADD(aColor, BD_PALEDESSERT) // GraMakeRGBColor({223,211,183}) // TAN 131
AADD(aColor, BD_LIGHTDESSERT) // GraMakeRGBColor({211,202,170}) // TAN 132
AADD(aColor, BD_DESSERT) // GraMakeRGBColor({211,202,183}) // TAN 133
AADD(aColor, BD_FADEDDESSERT) // GraMakeRGBColor({211,202,193}) // TAN 134
AADD(aColor, BD_XBP_PALEGRAY) // 15 // GREY 135
AADD(aColor, BD_SILVER) // GraMakeRGBColor({192,192,192}) // OTHER 136
AADD(aColor, BD_BRIGHTGREY) // GraMakeRGBColor({197,193,170}) // GREY 137
AADD(aColor, BD_GREY) // GraMakeRGBColor({188,188,176}) // GREY 138
AADD(aColor, BD_LIGHTGREY) // GraMakeRGBColor({230,231,232}) // GREY 139
AADD(aColor, BD_ICEGREY) // GraMakeRGBColor({236,242,234}) // GREY 140
AADD(aColor, BD_MICROSOFTGREY) // GraMakeRGBColor({224,223,227}) // GREY 141
AADD(aColor, BD_DEFAULTGREY) // GraMakeRGBColor({212,208,200}) // GREY 142
AADD(aColor, BD_WASHGREY) // GraMakeRGBColor({210,210,210}) // GREY 143
AADD(aColor, BD_SLATEGREY) // GraMakeRGBColor({158,182,205}) // GREY 144
AADD(aColor, BD_SILVERBLUE) // GraMakeRGBColor({131,156,165}) // OTHER 145
AADD(aColor, BD_GREYGREEN) // GraMakeRGBColor({153,173,174}) // GREY 146
AADD(aColor, BD_DARKGREY) // GraMakeRGBColor({090,091,080}) // GREY 147
AADD(aColor, BD_DULLGREY) // GraMakeRGBColor({087,091,090}) // GREY 148
AADD(aColor, BD_FRAMEGREY) // GraMakeRGBColor({148,148,148}) // GREY 149
AADD(aColor, BD_LINEGREY) // GraMakeRGBColor({128,128,128}) // GREY 150
AADD(aColor, BD_CREMESICLE) // GraMakeRGBColor({239,246,121}) // TAN 151
AADD(aColor, BD_FADEDGOLD) // GraMakeRGBColor({255,227,109}) // GOLD 152
AADD(aColor, BD_LIGHTGOLD) // GraMakeRGBColor({255,227,000}) // GOLD 153
AADD(aColor, BD_GOLD) // GraMakeRGBColor({255,217,000}) // GOLD 154
AADD(aColor, BD_TLCGOLD) // GraMakeRGBColor({255,197,000}) // GOLD 155
AADD(aColor, BD_ORANGE) // GraMakeRGBColor({255,160,000}) // ORANGE 156
AADD(aColor, BD_ORANGEPEEL) // GraMakeRGBColor({255,126,003}) // ORANGE 157
AADD(aColor, BD_BURNTORANGE) // GraMakeRGBColor({204,085,000}) // ORANGE 158
AADD(aColor, BD_LIGHTORANGE) // GraMakeRGBColor({255,180,000}) // ORANGE 159
AADD(aColor, BD_PALEORANGE) // GraMakeRGBColor({255,156,000}) // ORANGE 160
AADD(aColor, BD_TAN) // GraMakeRGBColor({244,226,171}) // TAN 161
AADD(aColor, BD_LIGHTTAN) // GraMakeRGBColor({244,225,199}) // TAN 162
AADD(aColor, BD_PALEYELLOW) // GraMakeRGBColor({255,255,210}) // YELLOW 163
AADD(aColor, BD_FLATYELLOW) // GraMakeRGBColor({255,255,193}) // YELLOW 164
AADD(aColor, BD_FADEDYELLOW) // GraMakeRGBColor({255,255,185}) // YELLOW 165
AADD(aColor, BD_HINTYELLOW) // GraMakeRGBColor({255,255,153}) // YELLOW 166
AADD(aColor, BD_LIGHTYELLOW) // GraMakeRGBColor({255,255,130}) // YELLOW 167
AADD(aColor, BD_YELLOW) // GraMakeRGBColor({255,229,053}) // YELLOW 168
AADD(aColor, BD_SUNNYYELLOW) // GraMakeRGBColor({255,255,000}) // YELLOW 169
AADD(aColor, BD_DEEPYELLOW) // GraMakeRGBColor({216,189,000}) // YELLOW 170
AADD(aColor, BD_DARKYELLOW) // GraMakeRGBColor({196,179,000}) // YELLOW 171
AADD(aColor, BD_OLIVEDRAB) // GraMakeRGBColor({142,142,056}) // GREEN 172
AADD(aColor, BD_XBP_BROWN) // 14 // TAN 173
AADD(aColor, BD_PINKCOTTON) // GraMakeRGBColor({255,215,255}) // PINK 174
AADD(aColor, BD_PUFFINK) // GraMakeRGBColor({241,185,213}) // PINK 175
AADD(aColor, BD_PALEPURPLE) // GraMakeRGBColor({231,160,226}) // PURPLE 176
AADD(aColor, BD_LIGHTPURPLE) // GraMakeRGBColor({210,152,206}) // PURPLE 177
AADD(aColor, BD_FUCHSIA) // GraMakeRGBColor({229,070,183}) // PINK 178
AADD(aColor, BD_HOTPINK) // GraMakeRGBColor({229,070,129}) // PINK 179
AADD(aColor, BD_XBP_PINK) // 4 // PINK 180
AADD(aColor, BD_XBP_DARKPINK) // 11 // PINK 181
AADD(aColor, BD_REDHINT) // GraMakeRGBColor({255,213,231}) // RED 182
AADD(aColor, BD_LAZYPURPLE) // GraMakeRGBColor({248,201,245}) // PURPLE 183
AADD(aColor, BD_WISPRED) // GraMakeRGBColor({239,195,228}) // RED 184
AADD(aColor, BD_FADEDPURPLE) // GraMakeRGBColor({241,187,241}) // PURPLE 185
AADD(aColor, BD_COTTONCANDYRED) // GraMakeRGBColor({255,147,156}) // RED 186
AADD(aColor, BD_PALERED) // GraMakeRGBColor({255,147,156}) // RED 187
AADD(aColor, BD_DEEPRED) // GraMakeRGBColor({229,070,097}) // RED 188
AADD(aColor, BD_RED) // 3 // RED 189
AADD(aColor, BD_CANDYRED) // GraMakeRGBColor({255,000,000}) // RED 190
AADD(aColor, BD_LIGHTRED) // GraMakeRGBColor({255,050,039}) // RED 191
AADD(aColor, BD_DARKRED) // GraMakeRGBColor({168,000,000}) // RED 192
AADD(aColor, BD_CRIMSON) // GraMakeRGBColor({220,020,060}) // RED 193
AADD(aColor, BD_INDIANRED) // GraMakeRGBColor({176,023,031}) // RED 194
AADD(aColor, BD_LAVENDER) // GraMakeRGBColor({230,230,250}) // OTHER 195
AADD(aColor, BD_PURPLEHINT) // GraMakeRGBColor({207,211,255}) // PURPLE 196
AADD(aColor, BD_COOLPURPLE) // GraMakeRGBColor({209,198,255}) // PURPLE 197
AADD(aColor, BD_PURPLE) // GraMakeRGBColor({188,151,255}) // PURPLE 198
AADD(aColor, BD_GRAPE) // GraMakeRGBColor({135,116,169}) // OTHER 199
AADD(aColor, BD_SLATEBLUE) // GraMakeRGBColor({113,113,198}) // BLUE 200
AADD(aColor, BD_FLATPURPLE) // GraMakeRGBColor({135,097,169}) // PURPLE 201
AADD(aColor, BD_AMETHYST) // GraMakeRGBColor({153,102,204}) // OTHER 202
AADD(aColor, BD_SIENNA) // GraMakeRGBColor({160,082,452}) // OTHER 203
AADD(aColor, BD_BLUEVIOLET) // GraMakeRGBColor({138,043,226}) // BLUE 204
AADD(aColor, BD_BRIGHTPURPLE) // GraMakeRGBColor({112,046,253}) // PURPLE 205
AADD(aColor, BD_DEEPPURPLE) // GraMakeRGBColor({117,007,229}) // PURPLE 206
AADD(aColor, BD_BEET) // GraMakeRGBColor({142,056,142}) // PURPLE 207
AADD(aColor, BD_TINTEDPURPLE) // GraMakeRGBColor({112,045,107}) // PURPLE 208
AADD(aColor, BD_RICHPURPLE) // GraMakeRGBColor({168,045,119}) // PURPLE 209
AADD(aColor, BD_OUTLOOKBUTT) // GraMakeRGBColor({236,233,216}) // OTHER 210
AADD(aColor, BD_OUTLOOKBGD) // GraMakeRGBColor({227,239,255}) // OTHER 211
AADD(aColor, BD_OUTLOOKRIBDARK) // GraMakeRGBColor({166,188,217}) // OTHER 212
AADD(aColor, BD_OUTLOOKRIBLIGHT) // GraMakeRGBColor({191,219,255}) // OTHER 213
AADD(aColor, BD_OUTLOOKMARGIN) // GraMakeRGBColor({101,147,207}) // OTHER 214
AADD(aColor, BD_SMSBGD) // GraMakeRGBColor({197,231,183}) // OTHER 215
AADD(aColor, BD_SMSRIBDARK) // GraMakeRGBColor({103,195,071}) // OTHER 216
AADD(aColor, BD_SMSRIBLIGHT) // GraMakeRGBColor({174,224,159}) // OTHER 217
AADD(aColor, BD_SMSRIBMARGIN) // GraMakeRGBColor({062,147,104}) // OTHER 218
AADD(aColor, BD_TRUE) // -4 // AAA 219
AADD(aColor, BD_WHITE) // 0 // AAA 220
AADD(aColor, BD_BACKGROUND) // -2 // AAA 221
AADD(aColor, BD_BLACK) // 1 // AAA 222
AADD(aColor, BD_NEUTRAL) // -1 // AAA 223
AADD(aColor, BD_FALSE) // -5 // AAA 224
PRIVATE aAttr // Массив атрибутов отображаемых линий
PRIVATE nEvent, mp1, mp2, oXbp // Переменные анализа событий
N_Graf = 224 // Кол-во графиков
@0, 0 DCSAY "COLOR DISPLAY" FONT ("22.HelveticalBold") SIZE 0
@ 2,1 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 103,35 ; // Размер окна для отображения графика
OBJECT oStatic;
EVAL {|| _PresSpace(oStatic, N_Graf ) }
DCREAD GUI ;
TITLE "Типовое решение по отображению семейства графиков"; // Надпись на окне графика
FIT ;
BUTTONS DCGUI_BUTTON_EXIT
RETURN
*************************************************
STATIC FUNCTION _PresSpace( oStatic, N_Graf )
LOCAL oPS, oDevice
PUBLIC X_MaxW := 1280, Y_MaxW := 640 // Размер графического окна в пикселях
oPS := XbpPresSpace():new() // Create a PS
oDevice := oStatic:winDevice() // Get the device context
oPS:create( oDevice ) // Link device context to PS
oPS:SetViewPort( { 0, 0, X_MaxW, Y_MaxW } )
oStatic:paint := {|mp1,mp2,obj| mp1 := LC_MultiLine( oPS, N_Graf ) }
RETURN NIL
*******************************************************
STATIC FUNCTION LC_MultiLine(oPS, N_Graf )
PRIVATE X0 := 0, Y0 := 0 // Начало координат по осям X и Y
g=0
FOR x=1 TO 8
FOR y=1 TO 28
++g
X1 := X0 + (x-1) * 50
Y1 := Y0 + (y-1) * 27
X2 := X1 + 50
Y2 := Y1 + 27
GraSetColor( oPS, aColor[g] , aColor[g] );GraBox( oPS, { X1, Y1 }, { X2, Y2 }, GRA_FILL )
GraSetColor( oPS, aColor[222], aColor[222] );GraStringAt( oPS, { X1+2, Y1+2 }, ALLTRIM(STR(g)) )
NEXT
NEXT
RETURN NIL

- Eugene Lutsenko
- Posts: 1649
- Joined: Sat Feb 04, 2012 2:23 am
- Location: Russia, Southern federal district, city of Krasnodar
- Contact:
Re: How to draw a line and write the text in the coordinates
How do I convert the last program to draw a range of RGB?
Re: How to draw a line and write the text in the coordinates
did you want to give User choise of Color ?Eugene Lutsenko wrote:How do I convert the last program to draw a range of RGB?
try to use Xbase++ (undocumented) Class XbpColorDialog(). look into Alaska Newsgroup
public.xbase++.gui
XbpColorDialog()
28. September 2010
greetings by OHR
Jimmy
Jimmy