Да, что-то в этом роде я и собираюсь сделать. Большое спасибо за помощь!
| Форум программистов «Весельчак У» |
|
|||
| Начало | Помощь | Поиск | Календарь | Почта | Войти | Регистрация |
|
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. Переместите, пожалуйста, в правильный раздел. |
||