Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
Страниц: [1] 2 3 4 ... 10
 1 
 : 10-07-2026 11:05 
Автор jur - Последний ответ от jur
Да, что-то в этом роде я и собираюсь сделать. Большое спасибо за помощь!

 2 
 : 08-07-2026 20:34 
Автор jur - Последний ответ от Джон
Как простой вариант... Не знаю куда тут Direct2D засунуть, но если нужно сохранить "рисунок", то (псевдокод)

1 создаём ВМР с нужными параметрами, как основу DC

   pBitmap = new Bitmap(Width, Height, PixelFormat24bppRGB);
   pBitmap->SetResolution(...);

   pGraphics = Graphics::FromImage(pBitmap);
   pGraphics->Clear(Color::White); // любой другой цвет фона
   pGraphics->SetInterpolationMode(InterpolationModeHighQuality); при необходимости и в зависимости от разрешения

2 в pGraphics рисуем всё что надо,

3 сохраняем в файл
CLSID clsID;
GetCLSID(L"image/png", &clsID);
pBitmap->Save(FileName, &clsID);

 3 
 : 07-07-2026 10:11 
Автор jur - Последний ответ от jur
Я забыл уточнить. Сейчас я все рисую с помощью GDI+, а это делается с помощью CPU (а в некотором режиме работы программы окон сигнала до 6 шт.). Моя идея в том, чтобы задействовать аппаратное ускорение графики. Это позволяет сделать Direct2D. Т.е. я рисую статику, как и сейчас, с помощью GDI+, сохраняю нарисованное в битмап и затем быстро, с помощью Direct2D, вывожу её в окно. А потом только дорисовываю сигнал средствами Direct2D. Я с этой библиотекой раньше не работал и не знаю, как в ней добраться до пикселей в ID2D1Bitmap. Точнее, я до этого вопроса пока не добрался Улыбаюсь

Кстати, я тут подумал, а может вывод в окно битмапа с сохраненной статикой средствами GDI+ тоже достаточно быстрый? Ведь это не рисование всех осей с нуля (с текстами, рисками и т.п.), а просто вывод готовой картинки? Надо бы попробовать...

 4 
 : 04-07-2026 05:03 
Автор jur - Последний ответ от Алексей++
jur, а что мешает рисовать всё на одном полотне ? На быстродействии это вряд ли скажется, а удобство повысится Улыбаюсь

По библиотеке не подскажу, затрагивал её мало, да и не помню ничего. Но формат BMP известен, его легко вручную собрать, тем более, что для отладки (скорость не требуется)

Вот, со студентами не так давно диаграмму Вороного наивным способом рисовали
https://www.onlinegdb.com/kEdUaVEAD#

только структуры BITMAPFILEHEADER, BITMAPINFOHEADER и вообще всё из файла "bitmap_headers.h" не нужно тащить, это в винде всё сразу есть



Добавлено через 2 минуты и 14 секунд:
можно ещё обратить внимание на функцию GetDIBits https://learn.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-getdibits


 5 
 : 03-07-2026 07:06 
Автор jur - Последний ответ от jur
Привет!

Недавно начал работать с Direct2D. У меня есть ряд окон сигналов, которые рисуются с помощью этой библиотеки. В окне отображаются оси X и Y, а в основном поле окна рисуется сигнал. При этом оси не меняются, а меняется сам сигнал. Напрашивается разделение рисования статических элементов (оси) и самого сигнала. Для этого статика рисуется в битмап и выводится при обновлении окна. Затем к ней добавляется рисование сигнала. Это замечательно работает. Но мне понадобилось, в отладочных целях, сохранить битмап в файл (например PNG). Казалось бы что проще. Но не тут-то было. Неделю бодаюсь с этой проблемой - никак. Приснопамятный ИИ уже задрал. Он предлагает множество вариантов, но ни один не работает. Мне бы просто выцарапать из битмапа картинку в стиле GDI/GDI+, а дальше я без проблем ее сохраню.

Подскажите, пожалуйста, как это сделать?

P.S. Не нашел раздела подходящего под Direct2D. Переместите, пожалуйста, в правильный раздел.

 6 
 : 03-06-2026 16:17 
Автор KeksWin365 - Последний ответ от HandKot
еще как вариант: какое-нито стороннее ПО. тут уже смотреть автозагрузку

 7 
 : 03-06-2026 12:45 
Автор KeksWin365 - Последний ответ от RXL
Нынче каждый может спросить гугл. Там, обычно, вполне адекватные решения: https://www.google.com/search?q=win11+запретить+автоматическое+пробуждение+компьютера

Для планировщика надо смотреть все задачи, вкладка Условия, галочка "Пробуждать коипьютер двя выполнения задачи".

 8 
 : 03-06-2026 06:45 
Автор KeksWin365 - Последний ответ от HandKot
Добрый день.
Возможно у вас в шедулере есть задачи, например, "обновить систему"
Посмотрите по логам, в какое время у Вас происходит пробуждение и попробуйте найти задание на это время.
Еще, как вариант, отключите автоматическое обновление системы

 9 
 : 02-06-2026 16:28 
Автор KeksWin365 - Последний ответ от KeksWin365
Ребята, ситуация бесит. Ноутбук Lenovo на Win 11. Кладу его в рюкзак в спящем режиме (крышку закрываю, лампочка мигает). Через час достаю - он горячий как утюг, вентиляторы крутятся, батарея упала с 80% до 30%. В журнале событий пишет "выход из режима сна по таймеру". Нашёл в настройках "разрешить таймеры" - отключил, не помогло. Гибернацию включать неудобно - долго загружается. Это глюк обновления или я что-то пропустил? Может, есть программа, которая показывает, что конкретно просыпает ноут?

Страниц: [1] 2 3 4 ... 10
Powered by SMF 1.1.21 | SMF © 2015, Simple Machines