|
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
|
||||||
Создать окно с TButton и TImage (+рисование)17.06.2009, 20:53. Показов 4614. Ответов 16
Метки нет (Все метки)
Здравствуйте...
Я больше по Делфи, но вдруг срочно понадобилось делать программу в C++... С C++ знакомился в институте, но сами, наверное, знаете, что мало в каких институтах нормальная программа... ![]() И знаком только с консольными приложениями (под Д.О.С.). Вот нашел код, который создаёт окно с кнопкой, при нажатии на которую показывается диалоговое окно:
И так как скорость вывода рисунка тоже важна, было бы неплохо использовать какой-то аналог ScanLine в Делфи... Есть ли что-то подобное в C++ ?
0
|
||||||
| 17.06.2009, 20:53 | |
|
Ответы с готовыми решениями:
16
Рисование TImage.
Рисование на TImage |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 18.06.2009, 01:02 | |
|
Оно не в "С++ зовется", оно в WINAPI зовется. Так как ты пишешь на апи, то С++ тут не при чем. Тебе нужно прочитать документацию по виндовому элементу static, сделать ему тип соответствующий для имэйджей и делать с ним, что хочешь. Либо ты можешь рисовать картинку прямо на канве у окна. Дешево и сердито.
0
|
|
|
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
|
|
| 18.06.2009, 01:24 [ТС] | |
|
Я же говорил - знаком только с консольными приложениями...
Я нашел код делающий окно и кнопку и совершенно не в курсе как он работает... Мне нужно на C++... ![]() А про ScanLine не знаете?
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 18.06.2009, 01:42 | |
|
Так если не в курсе, читать надо.
Код - чистый винапи. http://www.dotnetheaven.com/Up... 8701e43292 http://www.firststeps.ru/cbuilder/r.php?15 Я, конечно, извиняюсь, но что мы должны сделать? За вас код засунуть в редактор и скомплировать? Создайте win32 проект, безо всяких mfc и прочей лабуды, добавьте файл, туда код рабочий. Потом Build и все готово. Про scanline уже не помню, так как, не прогал под винду уже давно. И билдерами не пользовался. P. S. вот что билдеры делают с прогерами. Люди так и думают, что в винде есть tbutton и timage ![]() Добавлено через 9 минут 30 секунд Только что прочитал про scanline. Это все на более низком уровне также может быть реализовано обычным кодом с использованием указателя буфера. Как я понимаю, вся разница в том, что scanline использует прямой доступ к цветовым данным, без вызовов функций апи. По сути, буфер и указатель. Никто не мешает использовать буфер картинки и нам. BITMAPINFOHEADER, BITMAPINFO. Находим, где в памяти данные и напрямую оттуда читаем/пишем. Вот и scanline готов. (не забудим о формате изображение/количестве байт на пиксел и т д)
0
|
|
|
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
|
||||
| 18.06.2009, 01:49 [ТС] | ||||
Там есть такие компоненты...![]()
У меня "кода рабочего" нету...
Или это одно и то же? Говорю же - никогда не работал на этом C++... В Делфи создание окна, TButton, TImage и обработчика нажатия на кнопку за 4 щелчка мыши делается...
0
|
||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 18.06.2009, 01:51 | ||
|
Ну вот, самое время научиться.
0
|
||
|
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
|
||||
| 18.06.2009, 02:04 [ТС] | ||||
Просто C++ не моя специализация, так сказать...
Если "да", то мне скорее всего надо без винапи..... ![]()
Вот странно: называется Visual C++, а на деле нифига не "визуал"... Вот в Делфи и Visual Basic всё "визуально" - вот фома, вот на неё кнопку "рисуешь" - а тут? Может в меню надо что-то нажать, чтоб также показывалось, а я не вкурсе просто?
0
|
||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 18.06.2009, 02:08 | |
|
А тут то, что учит программировать, а не формочки рисовать. То, работая с чем, будешь понимать, как работает система. Большинство программистов C++builder, delphi даже не знаю, что существует такая вещь, как winapi, сообщения и т. д.. Кошмар.
Вообще можно создать проект MFC dialog based и в нем лепить формочки.
0
|
|
|
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
|
|||||||
| 18.06.2009, 02:25 [ТС] | |||||||
![]() Сейчас нашёл кое-где, как можно дополнить код из первого поста... Кажется также на ванапи... Вместе вышло что-то вроде этого:
0
|
|||||||
|
5 / 5 / 0
Регистрация: 21.12.2008
Сообщений: 82
|
|
| 18.06.2009, 06:26 | |
|
AutoBot, Делай лучше на MFC там быстрее разберешься.
0
|
|
|
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
|
|
| 19.06.2009, 00:56 [ТС] | |
|
Сделал версию и на MFC, только снова не понятно как ScanLine'ом делать...
И, кстати, как сделать чтоб рисунок на Picture не стирался при перекрытии? Добавлено через 9 часов 20 минут 20 секунд
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 19.06.2009, 01:29 | |
|
Выше я описал, как работает scanline. Нужно использовать буфер изображения напрямую в памяти. Или ищите аналог scanline в MFC. Но, насколько я помню, его там нет.
Нужно перерисовывать изображение в обработчике WM_PAINT, чтобы не стиралось.
0
|
|
|
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
|
|||||||||||
| 19.06.2009, 02:34 [ТС] | |||||||||||
|
Я так делал:
Его можно будет глобально объявить?
0
|
|||||||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 19.06.2009, 02:46 | |
|
Погоди, погоди. Рисуешь-то ты в при апдейте окна? Твой код рисования должен быть в обработчике перерисовки окна. сообщение WM_PAINT называется, если память не изменяет.
0
|
|
|
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
|
|||||||||||
| 21.06.2009, 13:54 [ТС] | |||||||||||
|
При нажатии на кнопку...
Оно секунды 3-4 рисуется... Думаю в WM_PAINT оно будет слишком тормозить... Добавлено через 25 минут 11 секунд Я же не фон для формы делаю, а иллюстрацию... В Делфи нарисовал что-нибудь в TImage.Canvas и всё... Оно само чтоль всё перепрорисовывает? Скрывает всё самое интересное от меня? ![]() Может в Делфи внутри TImage есть переменная типа Bitmap где хранится нарисованное, а при WM_PAINT оно скрытно от программистов делает что-то вроде:
![]() Добавлено через 11 часов 58 минут 6 секунд Фуф... Ща сдал Физику..... Почти 3-е суток не спал... ![]() Теперь можно будет передохнуть и нормально подумать что к чему... ![]() Добавлено через 21 час 0 минут 9 секунд Вот попытался глобально объявить Bitmap:
И как связаны эти CBitmap и HBITMAP? На котором теперь рисовать? Добавлено через 2 часа 16 минут 56 секунд Так... С этим вроде разобрался (хотя наугад делал)... А вот как заставить своё окно перерисоваться (как бы программно послать ему WM_PAINT)?
0
|
|||||||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||
| 21.06.2009, 14:01 | |||
0
|
|||
|
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
|
|
| 21.06.2009, 14:18 [ТС] | |
|
Здесь не очень-то много помогающих нашлось...
Я уже сюда переселился: http://forum.sources.ru/index.php?showtopic=275560
0
|
|
| 21.06.2009, 14:18 | |
|
Помогаю со студенческими работами здесь
17
Рисование на TImage
Рисование на TImage.Canvas TImage:рисование линий Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|