Регистрация | | запомнить |
 
 
ВК



Просматривают:   1 Анонимно





Новый цвет
print | #
Пользователь 2 уровня
Присоединился:
2008/2/4 10:01
Откуда Москва
Сообщений: 49
Offline
Суть вопроса:
Есть имя цвета в Label1.Caption= "Pantone 176C"
Нужно назначить переменной
Dim myColor As new Color
Подскажите как это сделать?

Set myColor...????????????????????......= Label1.Caption

Опубликовано: 2010/2/20 21:53


Re: Новый цвет
Титан - модератор
Присоединился:
2006/4/8 19:42
Сообщений: 152
Offline
возможны варианты... вот один из них:

Dim c As New Color, pal As Palette, index&
Set pal = Palettes.OpenFixed(cdrPANTONECoated)
index = pal.FindColor("PANTONE 176 C")
If index > 0 Then
    Set c = CreateFixedColor(cdrPANTONECoated, index)
    ActiveShape.Fill.ApplyUniformFill c
Else
    'color not found
End If

ОБРАТИТЕ ВНИМАНИЕ НА ПРОБЕЛ МЕЖДУ НОМЕРОМ И БУКВОЙ "С" в названии цвета.

Опубликовано: 2010/2/20 22:04


Re: Новый цвет
Пользователь 2 уровня
Присоединился:
2008/2/4 10:01
Откуда Москва
Сообщений: 49
Offline
Благодарю за "пример" Весьма помог .
столкнулся с другой задачей: как по имени цвета узнать принадлежность к конкретной палитре палитре? например cdrHKS,
,cdrPANTONEHexCoated,
cdrPANTONEHexUncoated,
cdrPANTONEMatte,
cdrPANTONEMetallic,
cdrPANTONEPastelCoated,
cdrPANTONEPastelUncoated,
cdrPANTONEProcess,
cdrPANTONEProcessCoatedEURO,
cdrPANTONESolid2ProcessEURO,
cdrPANTONEUncoated

Опубликовано: 2010/2/20 23:52


Re: Новый цвет
Титан - модератор
Присоединился:
2006/4/8 19:42
Сообщений: 152
Offline
по-хорошему проанализировать самому в коде принадлежность исходя из диапазона номеров и букв, либо брутфорсом перебрать в цикле все палитры))

set myColor = paletteSearch( Label1.Caption )
...............

Function paletteSearch(colorName$) As Color
    Dim pal As Palette, var As Variant, index&, i&, bClose As Boolean
    
    On Error Resume Next
    For Each var In Array(cdrTRUMATCH, cdrPANTONEProcess, cdrPANTONECorel8, cdrFOCOLTONE, cdrSpectraMaster, cdrTOYO, cdrDIC, cdrLab, cdrHKS, cdrWebSafe, cdrPANTONEMetallic, cdrPANTONEPastelCoated, cdrPANTONEPastelUncoated, cdrPANTONEHexCoated, cdrPANTONEHexUncoated, cdrPANTONEMatte, cdrPANTONECoated, cdrPANTONEUncoated, cdrPANTONEProcessCoatedEURO, cdrPANTONESolid2ProcessEURO)
        
        'keep user opened palettes
        bClose = True
        For i = 1 To Palettes.Count
            If Palettes(i).PaletteID = var Then bClose = False: Exit For
        Next
        
        'search palette
        Set pal = Palettes.OpenFixed(var)
        If Not pal Is Nothing Then
            index = pal.FindColor(colorName)
            
            If bClose Then
                ' close palette bug workaround
                For i = 1 To Palettes.Count
                    If Palettes(i).PaletteID = pal.PaletteID Then Palettes(i).Close: Exit For
                Next
            End If
            Set pal = Nothing
            
            'found?
            If index > 0 Then
                Set paletteSearch = CreateFixedColor(var, index)
                Exit Function 'color is found
            End If
        End If
    Next
    ' color was not found, 'paletteSearch' is nothing
End Function

Опубликовано: 2010/2/21 0:18


Re: Новый цвет
Пользователь 2 уровня
Присоединился:
2008/2/4 10:01
Откуда Москва
Сообщений: 49
Offline
wOxxOm благодарю!!... а есть способ как нибудь ускорить такой поиск.? (((

Опубликовано: 2010/2/21 16:51


Re: Новый цвет
Титан - модератор
Присоединился:
2006/4/8 19:42
Сообщений: 152
Offline
имхо только если проанализировать самому в коде принадлежность исходя из диапазона номеров и букв, которые можно посмотреть в окошке настройки FILL (Shift-F11 вроде) на плашке, а там палитры))

Опубликовано: 2010/2/21 16:57







Форма быстрого ответа
ЛогинИмя   Пароль   Логин
Сообщение:          

      ПРИМЕР


 [далее...]
Уведомлять о сообщениях в теме.



[Настройки поиска]