PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка


Вопросы новичка

Сообщений 991 страница 1000 из 1000

991

mirashic написал(а):

SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, #file, #SPIF_UPDATEINIFILE | #SPIF_SENDWININICHANGE)

Вирусы пишем, однако.
Мало того, что выполнение этой строки, переглючивало прогу по полной (содержимое окна перерисовывалось, причем очень медлено), так еще рабочий стол почернел!
Я её сначала не заметил, только потом дошло что она обои меняет.

0

992

mirashic написал(а):

Этот-же код для наглядности:

Тоже не плохо! Только надо 31 строку переписать в виде
For a=0 To i
А то жесткое число 139 не дает возможности расширять базу данных цветов.

0

993

хотел как лучше, получилось как всегда...

0

994

ВиниПур написал(а):

Когда то я проектировал свою страничку в Интернет, мне понадобились стандартные цвета, для этого написал маленькую программку. Правда она была для старой версии Пурика, немного подправил, может тебе поможет чем. Состоит из текстового файла, типа базы и самого кода. Выбираешь название цвета и на экран выводится его HTML код, шестнадцатеричный и десятичный ну и его изображение.

Классная программа. Может что-нибудь позаимствую у тебя. :о)
Я  хотел сделать больше на расширение у пользователей словарного запаса цветов и их ассоциаций с цветом ну и заодно с их кодом,но уж больно некоторые названия у цветов  специфические, не факт что их название общепринятое…  Хочу разложить цвета по цветовым  группам примерно, как в этой  таблице( "http://ru.wikipedia.org/wiki/Цвета_Web" )
Но вот с названиями как-то есть сомнения, хотелось бы использовать общепринятые названия. Да и с восприятием близких цветов на  моем мониторе большие проблемы, некоторые с трудом различаю…  Честно говоря как-то пока не понимаю зачем всё это делаю, но может потом что на ум придет, или кто-то идею подкинет, что еще добавить… :question:

Отредактировано Lucagin (22.12.2010 23:07:31)

0

995

Вот набросал программу, пока работает  только с категорией цветов «красные», поиск еще не делал... палитра должна будет меняться при выборе других категорий цветов...
Может у кого есть  какая идея, что еще прикрутить к программе, чтобы стала более полезной и что могло бы улучшить восприятия цвета??? Клик по цвету дает его характеристики...

Код:
;{ константы
Enumeration
  #Window_0
EndEnumeration

;- MenuBar Constants
;
Enumeration
  #MenuBar_0
EndEnumeration


;- Gadget Constants
;
Enumeration
  #Image_0
  #Image_1
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #String_0
EndEnumeration

;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Arial", 14)
;- Image Plugins

;- Image Globals
;Global Image0
;Global Image1

;- Catch Images
;Image0 = CatchImage(0, ?Image0)
;Image1 = CatchImage(1, ?Image1)

;- Images
;DataSection
;Image0:
  ;IncludeBinary ""
;Image1:
  ;IncludeBinary ""
  ;EndDataSection
  
  ;}
  
Structure MyColor
  En.s
  Rus.s
  R.l
  G.l
  B.l
EndStructure
  
Global Dim Red_colors.MyColor(15)

Procedure Color()
    
 
 
;{ Red_colors

Red_colors(0)\En="Dark Red"
Red_colors(0)\Rus="Темно-красный"
Red_colors(0)\R=139
Red_colors(0)\G=0
Red_colors(0)\B=0 

Red_colors(1)\En="Carmine"
Red_colors(1)\Rus="Карминово-красный"
Red_colors(1)\R=150
Red_colors(1)\G=0
Red_colors(1)\B=24 

Red_colors(2)\En="Fire Brick"
Red_colors(2)\Rus="Огненно кирпичный"
Red_colors(2)\R=178
Red_colors(2)\G=34
Red_colors(2)\B=34

Red_colors(3)\En="Cardinal"
Red_colors(3)\Rus="Тёмно-красный, кардинал"
Red_colors(3)\R=196
Red_colors(3)\G=30
Red_colors(3)\B=58

Red_colors(4)\En="Crimson"
Red_colors(4)\Rus="Тёмно-красный, кровавый, кармазин"
Red_colors(4)\R=220
Red_colors(4)\G=20
Red_colors(4)\B=60

Red_colors(5)\En="Alizarin Crimson"
Red_colors(5)\Rus="Ализариновый красный"
Red_colors(5)\R=227
Red_colors(5)\G=38
Red_colors(5)\B=54

Red_colors(6)\En="Red"
Red_colors(6)\Rus="Красный"
Red_colors(6)\R=255
Red_colors(6)\G=0
Red_colors(6)\B=0

Red_colors(7)\En="Scarlet"
Red_colors(7)\Rus="Ярко-красный, алый"
Red_colors(7)\R=255
Red_colors(7)\G=36
Red_colors(7)\B=0

Red_colors(8)\En="Vermilion"
Red_colors(8)\Rus="Киноварь, ср. киноварь"
Red_colors(8)\R=255
Red_colors(8)\G=77
Red_colors(8)\B=0

Red_colors(9)\En="Titian"
Red_colors(9)\Rus="Тициановый"
Red_colors(9)\R=213
Red_colors(9)\G=62
Red_colors(9)\B=7

Red_colors(10)\En="Tenne"
Red_colors(10)\Rus="Краснобуро-оранжевый"
Red_colors(10)\R=205
Red_colors(10)\G=87
Red_colors(10)\B=0

Red_colors(11)\En="Indian red"
Red_colors(11)\Rus="Индейский красный"
Red_colors(11)\R=205
Red_colors(11)\G=92
Red_colors(11)\B=92

Red_colors(12)\En="Light Coral"
Red_colors(12)\Rus="Светло коралловым"
Red_colors(12)\R=240
Red_colors(12)\G=128
Red_colors(12)\B=128

Red_colors(13)\En="Salmon"
Red_colors(13)\Rus="Лососёвый"
Red_colors(13)\R=250
Red_colors(13)\G=128
Red_colors(13)\B=114

Red_colors(14)\En="Dark salmon"
Red_colors(14)\Rus="Тёмно лососёвый"
Red_colors(14)\R=233
Red_colors(14)\G=150
Red_colors(14)\B=122

Red_colors(15)\En="Light Salmon"
Red_colors(15)\Rus="Светло лососёвый"
Red_colors(15)\R=255
Red_colors(15)\G=160
Red_colors(15)\B=122

;}




Dim Pink_colors.MyColor(5)
Dim Orange_colors.MyColor(5)
Dim Yellow_colors.MyColor(10)
Dim Brown_colors.MyColor(16)
Dim Green_colors.MyColor(22)
Dim Blue_colors.MyColor(24)  
Dim Purple_colors.MyColor(16) 
Dim White_colors.MyColor(16) 
Dim Grey_colors.MyColor(9) 
  EndProcedure
    
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 1, 1024, 500, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateMenu(#MenuBar_0, WindowID(#Window_0))
      
      MenuItem(1,"Красные")
      ;MenuTitle("Красные")
      MenuTitle("Розовые")
      MenuTitle("Оранжевые")
      MenuTitle("Жёлтые")
      MenuTitle("Коричневые")
      MenuTitle("Зелёные")
      MenuTitle("Синие")
      MenuTitle("Фиолетовые")
      MenuTitle("Белые")
      MenuTitle("Серые")
      EndIf

      If CreateGadgetList(WindowID(#Window_0))
        CreateImage(#Image_0,730,380)
        ImageGadget(#Image_0, 10, 20, 730, 380, 0, #PB_Image_Border)
        CreateImage(#Image_1,290,200)
        ImageGadget(#Image_1,755, 20, 260, 200, 0, #PB_Image_Border)
        TextGadget(#Text_0, 760, 240, 270, 30, "Рус.:")
        SetGadgetFont(#Text_0, FontID1)
        TextGadget(#Text_1, 760, 290, 270, 30, "Eng.:")
        SetGadgetFont(#Text_1, FontID1)
        TextGadget(#Text_2, 760, 340, 270, 30, "RGB:")
        SetGadgetFont(#Text_2, FontID1)
        TextGadget(#Text_3, 760, 390, 270, 30, "BGR:")
        SetGadgetFont(#Text_3, FontID1)
        StringGadget(#String_0, 10, 440, 440, 30, "Введите название цвета:")
        SetGadgetFont(#String_0, FontID1)
        
      EndIf
    EndIf
EndProcedure

Procedure Palitra_clean () 
If StartDrawing(ImageOutput(#Image_0))
     Box(0, 0, 730, 380, RGB(255,218,185))
     Circle(182, 190, 180, RGB(0,0,0))
     Circle(182, 190, 178, RGB(255,255,255))
     Circle(544, 190, 180, RGB(0,0,0))
     Circle(544, 190, 178, RGB(255,255,255))
     
    StopDrawing()
        
EndIf       
  
  SetGadgetState(#Image_0,ImageID(#Image_0))
  
EndProcedure

Procedure Palitra (Angle, R_G_B)  
  
  If StartDrawing(ImageOutput(#Image_0))
          
        LineXY(182, 190, 182+Cos(Angle*#PI/180)*178, 190+Sin(Angle*#PI/180)*178, RGB(0,0,0))
        FillArea(182+Cos((Angle+2)*#PI/180)*175, 190+Sin((Angle+2)*#PI/180)*175,-1, R_G_B)
        Circle(544, 190, 180-Angle*11/22.5, R_G_B)      
        
     StopDrawing()
        
  EndIf       
  
  SetGadgetState(#Image_0,ImageID(#Image_0))  
  
EndProcedure

Procedure colar_P(r_g_b)
  
  If StartDrawing(ImageOutput(#Image_1))
          
        Box(0, 0, 290, 200, r_g_b)     
        
     StopDrawing()
        
  EndIf       
  
  SetGadgetState(#Image_1,ImageID(#Image_1))
  
EndProcedure

Procedure.s Perevod(color)
For b=1 To 2 
  a=Color%16
    ostat.s=Str(a)
  If a=10
    ostat.s="A"   
  ElseIf a=11
    ostat.s="B"    
  ElseIf a=12
    ostat.s="C"    
  ElseIf a=13
    ostat.s="D"  
  ElseIf a=14
    ostat.s="E"     
  ElseIf a=15
    ostat.s="F"     
  EndIf
  
  Color=Int(Color/16)
  S.s=ostat+S
Next
ProcedureReturn S
EndProcedure



Color()
Open_Window_0()
;Palitra_clean ()


Repeat
  event=WaitWindowEvent()
  gadget=EventGadget() 
  menu = EventMenu()
  EventType = EventType()
  
  If event=#PB_Event_Menu
    Palitra_clean ()
    If menu=1
      For a=0 To 15
        Palitra(a*22.5,RGB( Red_colors(a)\R,Red_colors(a)\G,Red_colors(a)\B)) 
      Next  
    EndIf    
    
  ElseIf event=#PB_Event_Gadget
      If gadget=#Image_0
        StartDrawing(ImageOutput(Gadget))
        Cvet = Point(WindowMouseX(#Window_0)-10, WindowMouseY(#Window_0)-20)     
        SetGadgetText(#Text_2,"RGB: ("+Str(Red(Cvet))+":"+Str(Green(Cvet))+":"+Str(Blue(Cvet))+")")
        For a=0 To 15 
          If Red_colors(a)\R=Red(Cvet) And Red_colors(a)\G=Green(Cvet) And Red_colors(a)\B=Blue(Cvet)
            SetGadgetText(#Text_0,"Рус.: " +  Red_colors(a)\Rus)
            SetGadgetText(#Text_1,"En.: " +  Red_colors(a)\En)
            SetGadgetText(#Text_3,"BGR: " +"$"+ Perevod(Blue(Cvet)) + Perevod(Green(Cvet))+ Perevod(Red(Cvet)))
          EndIf
          
        Next
               
        StopDrawing()
        colar_P(RGB(Red(Cvet),Green(Cvet),Blue(Cvet)))
      EndIf
  EndIf
  
  
Until event=#PB_Event_CloseWindow

Отредактировано Lucagin (23.12.2010 00:14:44)

0

996

Краснобуро-оранжевый

:O

0

997

Пётр написал(а):

Краснобуро-оранжевый

:D  Это не я сума схожу, так он переведен на сайте…  Я все цвета позаимствовал оттуда… «http://ru.wikipedia.org/wiki/Цвета_Web» там он на букву T… :shine:

У меня теперь у самого сомнения, на сколько этим обозначениям можно верить и на сколько они общеупотребительные?? :question:

Отредактировано Lucagin (23.12.2010 01:04:20)

0

998

В программе не хочется лепить лишних условных операторов, может можно решить без нагромождений? При нажатии меню надо какой-то переменной запомнить, что выбирается такой-то строковый массив, соответствующий нажатому пункту меню, а потом при вызове процедуры name_color() (строка 396) передать ей эту переменную, вернее передать сам массив…
Предположим, нажали меню «Красные» => надо запомнить, что работаем со строковым  массивом  Red_colors(), и при вызове процедуры  name_color() передать ей имя этого массива name_color(Number, Red_colors()) (строка 396). При нажатии «Розовые» всё тоже самое, но массив Pink_colors().
Не знаю, какой переменой можно запомнить название  массива, чтобы потом с ним можно было работать? Пробовал при нажатии меню создавать дополнительный строковый массив аналогичный  тому, который нужен для работы и все переменные присвоить переменным дополнительно созданного массива, а потом функции name_color () передать уже этот вновь созданный массив. Но это как-то грамозко получается да и глючит…  Может можно как-то малой кровью обойтись? 

Код:
;{ Константы
Enumeration
  #Window_0
EndEnumeration

;- MenuBar Constants
;
Enumeration
  #MenuBar_0
EndEnumeration


;- Gadget Constants
;
Enumeration
  #Image_0
  #Image_1
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #String_0
EndEnumeration  
  ;}
  
;{ Переменные
Structure MyColor
  En.s
  Rus.s
  R.l
  G.l
  B.l
EndStructure
  
Global Dim Red_colors.MyColor(15)
Global Dim Pink_colors.MyColor(15)
Global Dim Orange_colors.MyColor(5)
Global Dim Yellow_colors.MyColor(10)
Global Dim Brown_colors.MyColor(16)
Global Dim Green_colors.MyColor(22)
Global Dim Blue_colors.MyColor(24)  
Global Dim Purple_colors.MyColor(16) 
Global Dim White_colors.MyColor(16) 
Global Dim Grey_colors.MyColor(9) 
;}

Procedure Color()                                    ; присваиваем значения переменным строковых массивов...
    
 
 
;{ Red_colors

Red_colors(0)\En="Dark Red"
Red_colors(0)\Rus="Темно-красный"
Red_colors(0)\R=139
Red_colors(0)\G=0
Red_colors(0)\B=0 

Red_colors(1)\En="Carmine"
Red_colors(1)\Rus="Карминово-красный"
Red_colors(1)\R=150
Red_colors(1)\G=0
Red_colors(1)\B=24 

Red_colors(2)\En="Fire Brick"
Red_colors(2)\Rus="Огненно кирпичный"
Red_colors(2)\R=178
Red_colors(2)\G=34
Red_colors(2)\B=34

Red_colors(3)\En="Cardinal"
Red_colors(3)\Rus="Тёмно-красный, кардинал"
Red_colors(3)\R=196
Red_colors(3)\G=30
Red_colors(3)\B=58

Red_colors(4)\En="Crimson"
Red_colors(4)\Rus="Тёмно-красный, кровавый, кармазин"
Red_colors(4)\R=220
Red_colors(4)\G=20
Red_colors(4)\B=60

Red_colors(5)\En="Alizarin Crimson"
Red_colors(5)\Rus="Ализариновый красный"
Red_colors(5)\R=227
Red_colors(5)\G=38
Red_colors(5)\B=54

Red_colors(6)\En="Red"
Red_colors(6)\Rus="Красный"
Red_colors(6)\R=255
Red_colors(6)\G=0
Red_colors(6)\B=0

Red_colors(7)\En="Scarlet"
Red_colors(7)\Rus="Ярко-красный, алый"
Red_colors(7)\R=255
Red_colors(7)\G=36
Red_colors(7)\B=0

Red_colors(8)\En="Vermilion"
Red_colors(8)\Rus="Киноварь, ср. киноварь"
Red_colors(8)\R=255
Red_colors(8)\G=77
Red_colors(8)\B=0

Red_colors(9)\En="Titian"
Red_colors(9)\Rus="Тициановый"
Red_colors(9)\R=213
Red_colors(9)\G=62
Red_colors(9)\B=7

Red_colors(10)\En="Tenne"
Red_colors(10)\Rus="Краснобуро-оранжевый"
Red_colors(10)\R=205
Red_colors(10)\G=87
Red_colors(10)\B=0

Red_colors(11)\En="Indian red"
Red_colors(11)\Rus="Индейский красный"
Red_colors(11)\R=205
Red_colors(11)\G=92
Red_colors(11)\B=92

Red_colors(12)\En="Light Coral"
Red_colors(12)\Rus="Светло коралловым"
Red_colors(12)\R=240
Red_colors(12)\G=128
Red_colors(12)\B=128

Red_colors(13)\En="Salmon"
Red_colors(13)\Rus="Лососёвый"
Red_colors(13)\R=250
Red_colors(13)\G=128
Red_colors(13)\B=114

Red_colors(14)\En="Dark salmon"
Red_colors(14)\Rus="Тёмно лососёвый"
Red_colors(14)\R=233
Red_colors(14)\G=150
Red_colors(14)\B=122

Red_colors(15)\En="Light Salmon"
Red_colors(15)\Rus="Светло лососёвый"
Red_colors(15)\R=255
Red_colors(15)\G=160
Red_colors(15)\B=122

;}



;{ Pink_colors

Pink_colors(0)\En="Medium Violet Red"
Pink_colors(0)\Rus="Средний Красно-Фиолетовый"
Pink_colors(0)\R=199
Pink_colors(0)\G=21
Pink_colors(0)\B=133

Pink_colors(1)\En="Deep Pink"
Pink_colors(1)\Rus="Насыщенный розовый"
Pink_colors(1)\R=255
Pink_colors(1)\G=20
Pink_colors(1)\B=147

Pink_colors(2)\En="Hot Pink"
Pink_colors(2)\Rus="Ярко-розовый"
Pink_colors(2)\R=255
Pink_colors(2)\G=105
Pink_colors(2)\B=180

Pink_colors(3)\En="Pale Violet Red"
Pink_colors(3)\Rus="Бледно фиолетово-красный"
Pink_colors(3)\R=219
Pink_colors(3)\G=112
Pink_colors(3)\B=147

Pink_colors(4)\En="Light Pink"
Pink_colors(4)\Rus="Светло-розовый"
Pink_colors(4)\R=255
Pink_colors(4)\G=182
Pink_colors(4)\B=193

Pink_colors(5)\En="Pink"
Pink_colors(5)\Rus="Розовый"
Pink_colors(5)\R=255
Pink_colors(5)\G=192
Pink_colors(5)\B=203

Pink_colors(6)\En="Pale pink"
Pink_colors(6)\Rus="Бледно-розовый"
Pink_colors(6)\R=250
Pink_colors(6)\G=218
Pink_colors(6)\B=221

Pink_colors(7)\En="Pastel pink"
Pink_colors(7)\Rus="Пастельно-розовый"
Pink_colors(7)\R=255
Pink_colors(7)\G=209
Pink_colors(7)\B=220

Pink_colors(8)\En="Pale magenta"
Pink_colors(8)\Rus="Бледно-пурпурный"
Pink_colors(8)\R=249
Pink_colors(8)\G=132
Pink_colors(8)\B=229

Pink_colors(9)\En="Orchid"
Pink_colors(9)\Rus="Орхидея"
Pink_colors(9)\R=218
Pink_colors(9)\G=112
Pink_colors(9)\B=214

Pink_colors(10)\En="Wisteria"
Pink_colors(10)\Rus="Глициния"
Pink_colors(10)\R=201
Pink_colors(10)\G=160
Pink_colors(10)\B=220

Pink_colors(11)\En="Magenta"
Pink_colors(11)\Rus="Малиновый, фуксия"
Pink_colors(11)\R=255
Pink_colors(11)\G=0
Pink_colors(11)\B=255

Pink_colors(12)\En="Thistle"
Pink_colors(12)\Rus="Чертополох"
Pink_colors(12)\R=216
Pink_colors(12)\G=191
Pink_colors(12)\B=216

Pink_colors(13)\En="Pale red-violet"
Pink_colors(13)\Rus="Лиловый"
Pink_colors(13)\R=219
Pink_colors(13)\G=112
Pink_colors(13)\B=147

Pink_colors(14)\En="Heliotrope"
Pink_colors(14)\Rus="Гелиотроп"
Pink_colors(14)\R=223
Pink_colors(14)\G=115
Pink_colors(14)\B=255

Pink_colors(15)\En="Dark pink"
Pink_colors(15)\Rus="Тёмно-розовый"
Pink_colors(15)\R=231
Pink_colors(15)\G=84
Pink_colors(15)\B=128

;}




  EndProcedure
    
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 1, 1024, 500, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateMenu(#MenuBar_0, WindowID(#Window_0))
      
      MenuItem(1,"Красные")
      ;MenuTitle("Красные")
      ;MenuTitle("Розовые")
      MenuItem(2,"Розовые")
      MenuTitle("Оранжевые")
      MenuTitle("Жёлтые")
      MenuTitle("Коричневые")
      MenuTitle("Зелёные")
      MenuTitle("Синие")
      MenuTitle("Фиолетовые")
      MenuTitle("Белые")
      MenuTitle("Серые")
      EndIf

      If CreateGadgetList(WindowID(#Window_0))
        CreateImage(#Image_0,730,380)
        ImageGadget(#Image_0, 10, 20, 730, 380, 0, #PB_Image_Border)
        CreateImage(#Image_1,290,200)
        ImageGadget(#Image_1,755, 20, 260, 200, 0, #PB_Image_Border)
        TextGadget(#Text_0, 760, 240, 270, 30, "Рус.:")
        SetGadgetFont(#Text_0, FontID1)
        TextGadget(#Text_1, 760, 290, 270, 30, "Eng.:")
        SetGadgetFont(#Text_1, FontID1)
        TextGadget(#Text_2, 760, 340, 270, 30, "RGB:")
        SetGadgetFont(#Text_2, FontID1)
        TextGadget(#Text_3, 760, 390, 270, 30, "BGR:")
        SetGadgetFont(#Text_3, FontID1)
        StringGadget(#String_0, 10, 440, 440, 30, "Введите название цвета:")
        SetGadgetFont(#String_0, FontID1)
        
      EndIf
    EndIf
EndProcedure

Procedure Palitra_clean ()                           ; Создает пустые круги палитры
If StartDrawing(ImageOutput(#Image_0))
     Box(0, 0, 730, 380, RGB(255,218,185))
     Circle(182, 190, 180, RGB(0,0,0))
     Circle(182, 190, 178, RGB(255,255,255))
     Circle(544, 190, 180, RGB(0,0,0))
     Circle(544, 190, 178, RGB(255,255,255))
     
    StopDrawing()
        
EndIf       
  
  SetGadgetState(#Image_0,ImageID(#Image_0))
  
EndProcedure

Procedure Palitra (Number,Array MyArray.MyColor(1))  ; Создает палитру в зависимости от выбраной категории цвета
  For a=0 To Number-1
     If StartDrawing(ImageOutput(#Image_0))
        LineXY(182, 190, 182+Cos(360/Number*a*#PI/180)*178, 190+Sin(360/Number*a*#PI/180)*178, RGB(0,0,0))
        FillArea(182+Cos((360/Number*a+2)*#PI/180)*175, 190+Sin((360/Number*a+2)*#PI/180)*175,-1, RGB( MyArray(a)\R,MyArray(a)\G,MyArray(a)\B))
        Circle(544, 190, 180-a*(180/Number), RGB( MyArray(a)\R,MyArray(a)\G,MyArray(a)\B))      
        StopDrawing()
     EndIf       
     SetGadgetState(#Image_0,ImageID(#Image_0))  
  Next 
EndProcedure

Procedure colar_P(r_g_b)                             ; Отображает "Кликнутый цвет" в гаджете сбоку                           
  If StartDrawing(ImageOutput(#Image_1))
     Box(0, 0, 290, 200, r_g_b)     
     StopDrawing()        
  EndIf         
     SetGadgetState(#Image_1,ImageID(#Image_1))
 EndProcedure

Procedure.s Perevod(color)                           ; Переводит число цвета из 10-ной системы в 16-ричную...

For b=1 To 2 
  a=Color%16
    ostat.s=Str(a)
  If a=10
    ostat="A"   
  ElseIf a=11
    ostat="B"    
  ElseIf a=12
    ostat="C"    
  ElseIf a=13
    ostat="D"  
  ElseIf a=14
    ostat="E"     
  ElseIf a=15
    ostat="F"     
  EndIf
  
  Color=Int(Color/16)
  S.s=ostat+S
Next
ProcedureReturn S
EndProcedure

Procedure name_color(Number,Array MyArray.MyColor(1)); Определяет название цвета и его отображение в гаджете
  StartDrawing(ImageOutput(Gadget))
    Cvet = Point(WindowMouseX(#Window_0)-10, WindowMouseY(#Window_0)-20)     
    SetGadgetText(#Text_2,"RGB: ("+Str(Red(Cvet))+":"+Str(Green(Cvet))+":"+Str(Blue(Cvet))+")")
      For a=0 To Number 
        If MyArray(a)\R=Red(Cvet) And MyArray(a)\G=Green(Cvet) And MyArray(a)\B=Blue(Cvet)
          SetGadgetText(#Text_0,"Рус.: " +  MyArray(a)\Rus)
          SetGadgetText(#Text_1,"En.: " +  MyArray(a)\En)
          SetGadgetText(#Text_3,"BGR: " +"$"+ Perevod(Blue(Cvet)) + Perevod(Green(Cvet))+ Perevod(Red(Cvet)))
        EndIf          
      Next               
  StopDrawing()
    colar_P(RGB(Red(Cvet),Green(Cvet),Blue(Cvet)))
    
EndProcedure

Color()
Open_Window_0()

Repeat
  event=WaitWindowEvent()
  gadget=EventGadget() 
  menu = EventMenu()
   
  If event=#PB_Event_Menu
    Palitra_clean ()
 ;{ выбор пункта меню
    If  menu=1
      ;чтото=Red_colors()  <= здесь какой-то переменной надо установить что выбирается Red_colors(),а потом эту "переменную" передать процедуре name_color() строка 396...
      Number=15
      Palitra(16,Red_colors())
    ElseIf menu=2            
      ; что-то=Pink_colors() <= здесь надо установить что выбирается Pink_colors(), а потом эту "переменную" передать процедуре name_color() строка 396...
      Number=15
      Palitra(16,Pink_colors())           
    EndIf    
 ;}       
  ElseIf event=#PB_Event_Gadget
     If gadget=#Image_0
        name_color(Number,Pink_colors())   ;<= сюда вместо Pink_colors() надо передат тот строковый массив, который должен определяться при нажатии меню... 
     EndIf
  EndIf  
  
Until event=#PB_Event_CloseWindow

0

999

Пользуюсь такой программой для подбора цвета, может подтолкнёт на какие идеи...

http://mirashic.narod.ru/fail/Portable_ … o_1.51.rar

0

1000

mirashic написал(а):

Пользуюсь такой программой для подбора цвета, может подтолкнёт на какие идеи...
http://mirashic.narod.ru/fail/Portable_ … o_1.51.rar

Спасибо, очень мощная  и интересная программа, буду думать что из нее позаимствовать… :о))

Давайте продолжим тему здесь: http://purebasic.mybb.ru/viewtopic.php?id=151

Отредактировано Lucagin (23.12.2010 12:44:43)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка