Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744

Залить TImage фоном рабочего стола

24.07.2011, 17:34. Показов 3722. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую! Посоветуйте пожалуйста как залить компонент TImage фоном рабочего стола

Пробовал так, - безрезультатно:
C++
1
PaintDesktop(Image1->Canvas->Handle);
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.07.2011, 17:34
Ответы с готовыми решениями:

Как сделать .avi-файл фоном рабочего стола?
Как сделать .avi-файл фоном рабочего стола? Т. е чтобы под иконками, программами и т. д. воспроизводилось изображение?

Батник картинки из папки по очереди делает фоном Рабочего стола
Доброго утра всем . Задался целью собрать bat , который сменял бы фон .По сети скрипт нашёл только он с расширением bmp работает . Хм...

Залить фоном ячейки условного форматирования
Здравствуйте, подскажите, пожалуйста макрос, который будет: 1. заливать фоном результаты в столбцах D и J (в таблицах "Table1"...

22
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.07.2011, 17:51
Если это форма нашего приложения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//---------------------------------------------------------------------void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
// какая-либо форма нашего приложения, например Form2
Graphics::TBitmap *FormImage = Form2->GetFormImage();
 
Clipboard()->Assign(FormImage);
Image1->Picture->Assign(Clipboard());
Image1->Refresh();
}
//---------------------------------------------------------------------// делаем копию экрана
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// нажмите кнопочку PrintScreen а затем - Button1
Image1->Picture->Assign(Clipboard());
Image1->Refresh();
}
//---------------------------------------------------------------------
Программно нажать любую клавишу, например PrintScreen.
Код клавиши PrintScreen - это VK_SNAPSHOT.
C++
1
2
3
4
5
// нажимаем
keybd_event(VK_SNAPSHOT, 0, 0, 0);
// и например помещаем изображение в компонент Image1
Image1->Picture->Assign(Clipboard());
Image1->Refresh();
Источник не помню.
2
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
24.07.2011, 18:06
LK, а что такое Clipboard(). У меня на него ругается и не компилится проэкт.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.07.2011, 18:09
может, оно хочет #include "Clipboard.hpp"
2
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
24.07.2011, 18:16
C++
1
#include <clipbrd.hpp>
Добавлено через 7 минут
LK, а как очистить память от скрина?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.07.2011, 18:18
попробуйте
C++
1
EmptyClipboard();
2
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
24.07.2011, 18:24
LK, очищает. Но если не нажать после этого кнопку принт скрин (не программно) вылазит ошибка Invalid Clip board format
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.07.2011, 18:28
Лучший ответ Сообщение было отмечено как решение

Решение

Проще так, наверное:
Вложения
Тип файла: zip Работа с буфером обмена.zip (12.9 Кб, 26 просмотров)
4
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
24.07.2011, 18:33  [ТС]
Спасибо товарищ LK
Код запустить не получилось, но я понял что в нем это не совсем то что мне нужно

Требуется залить TImage фоном рабочего стола а не скриншотом рабочей области
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
24.07.2011, 18:39
LK, засунул это дело в таймер (пост №2) с интервалом 1 секунда. При переключение на браузер вылазит та же ошибка. Спасибо, буду разбираться.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.07.2011, 18:40
тогда ищем файл, который является фоном рабочего стола
SystemParametersInfo, SPI_GETDESKWALLPAPER и т.д.
1
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
24.07.2011, 18:44
Fuckall666, у меня твой код работает. по умолчанию стоит черный цвет. Программа канвасит черным.
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
24.07.2011, 19:51  [ТС]
Попробуйте любую картинку поставить - не будет работать.
Я пробовал в C++Builder 6 и в XE - просто белым красит
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
24.07.2011, 19:55
Fuckall666, попробуй Form1->Canvas
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
24.07.2011, 20:02  [ТС]
Проблема в том, что на форме есть другие компоненты, которые обновляются каждую секунду.. и вследствие их обновления заливка Canvas'а формы слетает!
(Хотя если все компоненты разместить на панелях, то не слетает)
Но все же было бы прекрасно если заливать TImage->Canvas вместо Form->Canvas
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.07.2011, 20:03
а так
C++
1
PaintDesktop(Image->Picture->Bitmap->Canvas->Handle);
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
24.07.2011, 21:07  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
а так
C++
1
PaintDesktop(Image->Picture->Bitmap->Canvas->Handle);
Ничего не происходит!

Добавлено через 40 минут
Судя по всему Canvas TForm отличается от Canvas'а TImage
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.07.2011, 09:48  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
тогда ищем файл, который является фоном рабочего стола
SystemParametersInfo, SPI_GETDESKWALLPAPER и т.д.
Вот к чему пришел! Но вместо расположения файла выдает нечто вроде точки и квадрата!

C++
1
2
3
4
        char *buffer = new char[255];
    SystemParametersInfoA(SPI_GETDESKWALLPAPER,0,buffer,sizeof(buffer));
    String bg = buffer;
    ShowMessage(bg);
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
27.07.2011, 09:54
C++
1
SystemParametersInfoA(SPI_GETDESKWALLPAPER,255,buffer,0);
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.07.2011, 10:20  [ТС]
Цитата Сообщение от mimicria Посмотреть сообщение
C++
1
SystemParametersInfoA(SPI_GETDESKWALLPAPER,255,buffer,0);
Спасибо!!! Все прекрасно работает.

А почему следующим способом ничего не получается?
C++
1
2
3
4
5
6
7
8
9
10
        wchar_t WinDir[256];
    GetWindowsDirectory(WinDir,256);
    String bg;
 
    TRegistry* Reg = new TRegistry;
    Reg->RootKey = HKEY_CURRENT_USER;
    Reg->OpenKey("Software\\Microsoft\\Internet Explorer\\Desktop\\General",true);
    Reg->ReadString(bg);
    Reg->CloseKey();
    delete Reg;
В реестре картинка лежит!
Windows 7
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.07.2011, 10:20
Помогаю со студенческими работами здесь

2 рабочего стола
В общем купил кабель HDMI - DVI-D Воткнул к ноуту HP G62 b062er и к монитору LG M1740a-RZ Видеокарта ATI Mobillity HD5470 Расширил...

Отключение рабочего стола
Когда захожу в винду, у меня выключается рабочий стол, и приходится самим его включать. Файл был с расширением .bat

Фон рабочего стола
С недавнего времени с рабочего стола пропало фоновое изображение и в правом нижнем углу экрана появилась надпись &quot;Ваша копия Windows...

Скришот рабочего стола
подскажите пожалуйста как сделать скришот рабочего стола ? не экрана, а рабочего стола! и как установить заставку на рабочий стол ? хочу...

Перенос рабочего стола.
Приветствую! Подскажите пожалуйста путь,как в Vsta Home Basic 64bit, перместить рабочий стол на другой диск? Пробовал вот такую схему: В...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru