E=m*c^2
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
1

Вывод графических примитивов в консольное окно посредством загрузки в консоль bmp изображения

27.09.2019, 09:34. Показов 1563. Ответов 2

Author24 — интернет-сервис помощи студентам
Добрый день!

Хочу "написать" код для вывода графических примитивов в консольное окно посредством загрузки в консоль bmp изображения. На форуме описан способ загрузки бмп в консоль и проблем не возникает, но хотелось бы усовершенствовать процесс и загружать не с диска а из памяти. то есть другими словами хочется создать видеобуфер самостоятельно его отрисовывать и выгружать в консоль. выгрузка в консоль не принципиальна можно и в виндоус окно.

кратко.
загрузка бмп в виндоус из памяти
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2019, 09:34
Ответы с готовыми решениями:

Вывод графических примитивов на XNA
Как на XNA выводить на экран примитивы линию или полосу?

Хранение, вывод и изменение графических примитивов
Здравствуйте! Помогите новичку организовать хранение, вывод и изменение графических примитивов....

Вывод текста и графических примитивов на экран компьютера
выводит текст и квадрат на экран компа может кому понадобится, ибо в основном пишут как вывести...

Вывод графических объектов на консоль
здр.. создал проект на чистом Си в Code::Blocks v17.12 с целью вывода некоторых графических...

2
4174 / 1824 / 218
Регистрация: 06.10.2010
Сообщений: 4,111
27.09.2019, 14:34 2
Для вывода bmp на экран (точнее в Device Context) можно использовать SetDIBitsToDevice, оно также может работать с jpeg и png.
1
E=m*c^2
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
12.10.2019, 10:50  [ТС] 3
Доброго всем времени дня.
хочется реанимировать тему на следующих основаниях.
ценой неимоверных умственных усилий, которые не вызовут ничего кроме здорового смеха у людей по опытней, я смог создать свою версию кода оконного приложения и теперь полон решимости продолжить свое движение по направлению написания своего игрового движка (у меня много свободного времени чтобы плохо сделать то что другие уже сделали хорошо)
мой код
Assembler
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
include includes\win64a.inc
 
CreateWindowExParam struct
    X   dq  ?
    Y   dq  ?
    nWidth  dq  ?
    nHeight dq  ? 
    hWndParent  dq  ?
    hMenu   dq  ?
    hInstance   dq  ?
    lpParam dq  ?
CreateWindowExParam ends
 
.data
    wc WNDCLASSEX <sizeof(WNDCLASSEX),0,WProc,0,0,NULL, \
                    NULL,NULL,COLOR_BTNFACE+1,NULL,LCN,NULL>
    cwep CreateWindowExParam <100h,100h,200h,100h,NULL,NULL,0,NULL>
    msg MSG <>
    hWnd dq ?
    hDC dq ?
    TTL db 'Win64 program template',0
    LCN db 'FASMWIN64',0
 
.code
WinMain proc
        sub rsp,sizeof(CreateWindowExParam)+8
            
        lea rdi,wc
        xor rcx,rcx
        call GetModuleHandle
        mov [rdi.WNDCLASSEX.hInstance],rax
        mov rbx,rax
        xor rcx,rcx
        mov rdx,IDI_APPLICATION
        call  LoadIcon
        mov [rdi.WNDCLASSEX.hIcon],rax
        mov [rdi.WNDCLASSEX.hIconSm],rax
        xor rcx,rcx
        mov rdx,IDC_ARROW
        call LoadCursor
        mov [rdi.WNDCLASSEX.hCursor],rax
        lea rcx,wc
        call RegisterClassEx
            
        lea rsi,cwep
        lea rdi,[rsp+20h]
        mov rcx,sizeof(CreateWindowExParam)/8
        rep movsq
        lea rdx,LCN
        lea r8,TTL
        mov r9,(WS_OVERLAPPEDWINDOW or WS_VISIBLE);(WS_VISIBLE+WS_DLGFRAME+WS_SYSMENU)
        mov [rdi - CreateWindowExParam + CreateWindowExParam.hInstance],rbx
        call CreateWindowEx
            
        lea rbx,msg
msg_loop:   mov rcx,rbx
        xor rdx,rdx
        xor r8,r8
        xor r9,r9
        call GetMessage
        cmp eax,1
        jb  end_loop
        jne msg_loop
        mov rcx,rbx
        call TranslateMessage
        mov rcx,rbx
        call DispatchMessage
        jmp msg_loop
            
end_loop:   call ExitProcess
  
WinMain endp
WProc Proc
        sub rsp,28h
        call DefWindowProc
        add rsp,28h
        ret
WProc endp
end
что я хочу сделать и что я хочу спросить узнать.
следующим шагом я хочу создать битовую карту в доступной мне памяти в данном случае в стеке и "зарегистрировать" ее в системе таким способом чтобы в окно загружалась именно та битовая карта которая размешена в доступной мне памяти. то есть мне хотелось бы избежать ситуации когда система система при регистрации битовой карты скопирует ее и разместит гдето у себя тем самым создав ее копию. почему я хочу этого избежать? я предполагаю использовать эту битовую карту как "видео страницу" тоесть я буду ее "отрисовывать" а по окончанию процесса "рисования" вызвать функцию загрузки картинки. таким образом если система скопирует карту при регистрации то значит я утрачу возможность ее оперативно редактировать.
0
12.10.2019, 10:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2019, 10:50
Помогаю со студенческими работами здесь

Вывод в консоль SetPixel(R,G,B) с 256-цветового *.bmp
Добрый вечер, пытаюсь прочитать *.bmp файл заведомо известного размера и вывести его в консоль...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru