Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028

Сделать анимированную иконку в трее?

20.10.2014, 05:33. Показов 2056. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Предварительная подготовка нескольких картинок не нравится.
Моя идея такова:
Сделал иконку 16х16 пикселей - это будет шаблон, получился файл размером 1405 байт.
В этом файле область с 1086 по 1341 байт содержит как раз 16х16 пикселей изображения.
Каждый пиксель содержит 1 байт информации о цвете — самое простое разрешение и глубина цвета, но меня устраивает.
Теперь задача — заполнить эту область памяти моей картинкой — для упрощения задачи, сделать иконку напополам, снизу красной, сверху синей, и запилить полученное в TrayIcon.
Примерно так:
C++
1
2
3
String file1="16x16.ico";
TFileStream  *IconStream = new TFileStream(file1,fmOpenRead);
TrayIcon1->Visible=true;
и потом по таймеру, высчитываем новое изображение, записываем в стрим и
C++
1
TrayIcon1->Icon->LoadFromStream(IconStream);
Вот тут у меня загвоздка — как записать в стрим размером 1405 байт кусок памяти с 1086 по 1341?
К примеру, массив int Buffer[16][16]. Простите, рассказал неуклюже, но суть, вроде бы, ясна.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.10.2014, 05:33
Ответы с готовыми решениями:

Как сделать анимированную картинку?
Нужна небольшая анимированная картинка, показывающая, что выполняется некий процесс. Например переворачивающиеся песочные часы. Как это...

Как сделать иконку на qt для программы в трее для ubuntu?
Как сделать иконку на qt для программы в трее для ubuntu?

Нажатие на иконку в трее
господа вывожу иконку в трей таким образом- #include <windows.h> /* Declare Windows procedure */ LRESULT CALLBACK...

7
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
20.10.2014, 05:55  [ТС]
Вот сине-красный файл 16x16.ico в архиве
Вложения
Тип файла: rar 16x16.rar (190 байт, 9 просмотров)
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
20.10.2014, 09:54
Создай memorystream и скомбинируй туда содержимое файла и свои данные. Грузишь с файла первые 1085 байт, потом 256 со своего массива, потом остаток с файла, начиная с 1342 байта.
Забавный подход, хотя и не самый рациональный. Но хозяин-барин.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.10.2014, 13:25
Ну вот рабочий пример закраски половины иконки вашим методом. С использованием промежуточного буфера (по другому я не знаю как)__
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    char bufic[2000];
    TMemoryStream *ms = new TMemoryStream;
    ms->LoadFromFile(".\\Icon1.ico");
    int dli = ms->Size;
    ms->ReadBuffer( bufic,dli);   ms->Position = 0;
    for (int i=1086;i<1086+128;i++) bufic[i]=0xE7;
    ms->WriteBuffer( bufic,dli);  ms->Position = 0;
    Application->Icon->LoadFromStream(ms);
    delete ms; 
}
1
 Аватар для oxyfat
68 / 65 / 21
Регистрация: 01.05.2014
Сообщений: 247
20.10.2014, 15:24
Вы ерундой занимаетесь.
Делается так: берётся желаемое изображение ( кадра три, два ), преобразуется в значки и
выводиться с задержкой таймера или, что-то подобное.
Число кадров анимации, которую желаете изобразить, зависит от вас и переключателя типа SWITCH.
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
20.10.2014, 16:20  [ТС]
Почему-то не меняется отображение иконки, остается в первоначальном виде.
Что еще дописать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
byte Dat[16][16];
TMemoryStream *MemoryStream = new TMemoryStream  ;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
String file1="16x16.ico";
MemoryStream->LoadFromFile(file1);
TrayIcon1->Icon->LoadFromStream(MemoryStream);
TrayIcon1->Visible=true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MemoryStream->Position = 1086;
for (int i = 0; i < 8; i++)
    for (int j = 0; j < 16; j++)
        Dat[i][j] = StrToInt(Edit1->Text);
MemoryStream->WriteBuffer(Dat, 128);
//MemoryStream->SaveToFile("new.ico");
MemoryStream->Position = 0;
TrayIcon1->Icon->LoadFromStream(MemoryStream);
}
//---------------------------------------------------------------------------
Добавлено через 1 минуту
oxyfat, я хочу подобие графика в трей. Две-три картинки меня не устраивает. Только хардкор.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.10.2014, 18:11
Цитата Сообщение от +1 Посмотреть сообщение
Почему-то не меняется отображение иконки
У меня (ваш пример) меняется; только я меняю не трэй-иконку, а иконку приложения (BCB 5__Win 7ult).

Добавлено через 1 минуту
Может быть для трэй-иконки использовать Repaint при нажатии кнопки.
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
20.10.2014, 18:42  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
использовать Repaint
что-то я не нашел, где это?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.10.2014, 18:42
Помогаю со студенческими работами здесь

Как изменить иконку в трее
Как изменить иконку в треи после? делаю так ложу иконки в папку ресурсов пытаюсь изменить командой notifyIcon1.Icon = new...

Как убить иконку в трее?
Доброго дня всем! Долго мучился над проблемой как убить запущенную прогу, убил. Но возникла новая проблема. После того как я жестко...

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

Как заменить одну иконку другой в трее?
Вот собссно и весб вопрос... просто я не могу врубиться КАК? Разбирался с примером: Procedure TForm1.Ic(n:Integer;Icon:TIcon); Var...

Не отображать интерфейс приложения, а показать только иконку в трее
Я хочу сделать прогу таким образом: 1. При её запуске появляется ТОЛЬКО иконка в трее, NotifyIcon. Создавать её придётся в файле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru