|
|
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
Суть задачи такова, необходимо написать DLL-ку, которая будет строить BITMAP по заданным параметрам, что необходимо: 1. на этом BITMAP-е писать текст, используя шрифты системы, то есть что-нибудь типа DrawText 2. иметь доступ непосредственно к памяти образа картинки, чтобы можно было рисовать руками без функций API 3. иметь возможность задавать параметры BITMAP-а, такие как размер и BPP А теперь проблема: т.к. DrawText пишет только в DC, то решил создать его через CreateDC, при указании имени устройства DISPLAY естественно нельзя поменять глубину цвета BPP, создать без указания устройства наподобе CreateDC(NULL,NULL,NULL,&devmode) не получается, не создает и все, хотя структуру devmode заполнил уже всю, не помогает... Вот и вопрос, как все-таки создать независимый MemoryDC, или как выводить текст напрямую в BITMAP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 02:51 |
|
||
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
Ste@lth wrote: > А теперь проблема: т.к. DrawText пишет только в DC, то решил создать его > через CreateDC, при указании имени устройства DISPLAY естественно нельзя > поменять глубину цвета BPP, создать без указания устройства наподобе > CreateDC(NULL,NULL,NULL,&devmode) не получается, не создает и все, хотя > структуру devmode заполнил уже всю, не помогает... > > Вот и вопрос, как все-таки создать независимый MemoryDC, или как выводить > текст напрямую в BITMAP? Точно не помню, но посмотрите функции типа CreateCompatibleDC. Ещё в MSDN есть пример взятия скриншота с экрана при помощи как раз таких вот функций, но его надо рыть (находится по словам "display snapshot" или что-то вроде того). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 07:06 |
|
||
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
CreateCompatibleDC создает совместимый контекст с указанным, если 0 то с экраном, но еще раз повторюсь, как мне тогда указать BPP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 12:09 |
|
||
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
Ste@lth wrote: > CreateCompatibleDC создает совместимый контекст с указанным, если 0 то с > экраном, но еще раз повторюсь, как мне тогда указать BPP? Млин. Я студию полгода назад снес, когда на линукс перешел. Счас попробую на msdn поискать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 20:32 |
|
||
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
Ste@lth wrote: > CreateCompatibleDC создает совместимый контекст с указанным, если 0 то с > экраном, но еще раз повторюсь, как мне тогда указать BPP? > Вот не судьба была заглянуть на msdn заглянуть? [quote] The original bitmap in a memory DC is simply a placeholder. Its dimensions are one pixel by one pixel. Before an application can begin drawing, it must select a bitmap with the appropriate width and height into the DC by calling the SelectObject function. To create a bitmap of the appropriate dimensions, use the CreateBitmap, CreateBitmapIndirect, or CreateCompatibleBitmap function. After the bitmap is selected into the memory DC, the system replaces the single-bit array with an array large enough to store color information for the specified rectangle of pixels. [/quote] Там сказано, что при создании memoryDC битмап по умолчанию 1x1x1bpp и бесполезен, но можно создать новый битмап при помощи CreateBitmap или CreateBitmapIndirect, выбрать его (используя memoryDC) при помощи SelectObject и рисовать уже на нём. А CreateBitmapIndirect как раз "creates a bitmap with the specified width, height, and color format (color planes and bits-per-pixel).". Вы это искали? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 20:43 |
|
||
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
хм, похоже на правду... просто где-то читал что цветность контекста и битмапа должны совпадать... буду проводить опыты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 23:00 |
|
||
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
вот и проверил, HDC имеет 32 бита, мне надо создать 16-битный битмап, в результате SelectObject возвращает 0 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. изменил на 32 бита и все нормально Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. может я в чем не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 23:06 |
|
||
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
Ste@lth wrote: > вот и проверил, HDC имеет 32 бита, мне надо создать 16-битный битмап, в > результате SelectObject возвращает 0 А как насчет GetLastError? И, собственно, для чего вам именно 16-битный битмап? Как я понимаю, если вы хотите его рисовать, то вам должно быть все-равно, сколько в нем цветов. Если вам нужно выводитб на экран 16битный буфер с цветом, то лучше использовать SetDIBitsToDevice Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2007, 12:15 |
|
||
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
Нужно написать функцию формирующую битмап независимо от того на каком компе запускается, не привязываясь к контексту... и потом битмап не для вывода на экран а для формирования файла, посему и требуется иметь возможность менять глубину цвета как захочет пользователь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2007, 21:11 |
|
||
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
и GetLastError вернул 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2007, 21:13 |
|
||
|
Создание независимого MemoryDC
|
|||
|---|---|---|---|
|
#18+
Ste@lth wrote: > Нужно написать функцию формирующую битмап независимо от того на каком > компе запускается, не привязываясь к контексту... и потом битмап не для > вывода на экран а для формирования файла, посему и требуется иметь > возможность менять глубину цвета как захочет пользователь... Посмотрите дельфийские исходники TBitmap. Там это должно быть реализовано. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 07:56 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2028425]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
180ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 476ms |

| 0 / 0 |
