Конференция "Основная" » Динамическое изменение TrayIcon.Icon
 
  • Человек (02.08.11 12:54) [0]
    Здравствуйте. Нужно рисовать индикатор на TIcon динамически и присваивать его значение TrayIcon.Icon.

    Проблема в том, что у TIcon отсутствует Canvas, и рисовать на нем нельзя. Фон для TIcon хранится в TImageList.
    Я делаю так: получаю ImageList.GetBitmap, затем на этом TBitmap рисую что нужно, делаю ImageList.Insert и затем ImageList.GetIcon, где и получаю иконку. Но при этом почему-то теряется прозрачность (иконка изначально 32-битная).
    У ImageList стоит ColorDepth = cd32Bit.

    Delphi 2010, Win 7
  • Человек (02.08.11 13:00) [1]
    Вопрос в том, как корректно нарисовать на 32-битной иконке (TIcon), получаемой из ImageList что-нибудь, например, прямоугольник.
  • Сергей М. © (02.08.11 16:56) [2]
  • Человек (02.08.11 17:21) [3]

    > Сергей М. ©   (02.08.11 16:56) [2]


    Для 32-битных иконок это неприменимо.
  • sniknik © (02.08.11 19:49) [4]
    почему? какая принципиальная разница?
  • QAZ (02.08.11 21:54) [5]

    > Человек   (02.08.11 12:54)  

    никто и никогда в здравом уме не рисует динамически на иконках для трея
    делаются заранее несколько иконок и под нужное состояние загружается соответствующая
  • brother © (03.08.11 04:19) [6]
    > рисует динамически на иконках для трея

    не уверен, имхо рисуют на битмапе и ассоциируют с его иконкой
  • QAZ (03.08.11 12:19) [7]

    > имхо рисуют на битмапе и ассоциируют с его иконкой

    ну если только очень извращеные\"продвинутые" ;)
  • brother © (03.08.11 12:25) [8]
    на вкус и цвет...
  • DiamondShark © (03.08.11 12:48) [9]

    > brother ©   (03.08.11 12:25) [8]
    > на вкус и цвет...

    А это не вопрос вкуса и цвета, это вопрос психического здоровья.
  • Человек (03.08.11 13:16) [10]

    > sniknik ©   (02.08.11 19:49) [4]
    > почему? какая принципиальная разница?

    Например, в 32-битных изображениях не используются маски и TransparentColor, т.к. там есть полноценный альфа-канал.


    QAZ   (02.08.11 21:54) [5]
    > никто и никогда в здравом уме не рисует динамически на иконках
    > для треяделаются заранее несколько иконок и под нужное состояние
    > загружается соответствующая

    У меня может быть 9999 состояний. Не вижу смысла генерировать их заранее, если они могут легко генерироваться в рантайме.
  • Palladin © (03.08.11 14:06) [11]

    > QAZ   (02.08.11 21:54) [5]

    Не совсем понял, почему никто не рисует? Религия запрещает? В чем проблемы то? Что именно подорвет здоровье ума?
  • Palladin © (03.08.11 14:07) [12]
    Регет отлично рисует траффик. Многие программы выводят текст. Это все по-твоему больные люди, как я понимаю...
  • sniknik © (03.08.11 14:28) [13]
    > Например, в 32-битных изображениях не используются маски и TransparentColor, т.к. там есть полноценный альфа-канал.
    я спрашивал принципиальную разницу...

    http://base.vingrad.ru/view/2855-32-bitnyie-ikonki:-zakat-solntsa-vruchnuyu
    единица в маске указывает на то, что изображение в данной точке не рисуется, ноль - соответственно рисуется. В 32-разрядном режиме на один пиксель приходится 4 байта, причём один из них - коэфициент прозрачности (0 - абсолютно прозрачно, 255 - абсолютно непрозрачно).

    черно белое на 4-х цветное поменять? канал, эта та же маска.
  • sniknik © (03.08.11 14:29) [14]
    > 4-х цветное
    блин, однобайтное, 256-цветное.
  • QAZ (03.08.11 14:48) [15]

    > У меня может быть 9999 состояний. Не вижу смысла генерировать
    > их заранее, если они могут легко генерироваться в рантайме.

    хотелбы посмотреть твои 9999 состояний в квадрате 16х16 точек

    > Регет отлично рисует траффик. Многие программы выводят текст

    незнай где там график,просто подвижные треугольники
    про текст(Многие), хоть одну назови

    > Palladin

    главное не как можно,а как правильно
    и образец для этого, собственно микрософт
  • Человек (03.08.11 15:05) [16]

    > хотелбы посмотреть твои 9999 состояний в квадрате 16х16
    > точек


    Две цифры вверху -- две внизу, шрифтом Small Fonts.
  • QAZ (03.08.11 15:12) [17]
    круто,а главно информативно
  • Человек (03.08.11 15:18) [18]

    > QAZ   (03.08.11 15:12) [17]
    > круто,а главно информативно

    Когда мне нужен будет совет, как сделать "круто" и "информативно", я у тебя спрошу. А пока хочется все же узнать у адекватных людей, как корректно решить описанную проблему.
  • Человек (03.08.11 15:22) [19]

    > sniknik ©   (03.08.11 14:28) [13]
    черно белое на 4-х цветное
    > поменять? канал, эта та же маска.


    Попробую сегодня, отпишусь.
  • QAZ (03.08.11 15:24) [20]
    а где проблемма?
    рисуеш картинку,рисуеш к ней маску прозрачностей
    маску суеш в альфу и вуаля
 
Конференция "Основная" » Динамическое изменение TrayIcon.Icon
Есть новые Нет новых   [120361   +44][b:0][p:0.001]