Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
zuze |
16.1.2013, 18:31
Сообщение
#21
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Алексей1153 @ 16.1.2013, 17:50) Link 1) Qpainer - что за класс ? Это я ошибся при наборе должно быть QPainter. Цитата(Алексей1153 @ 16.1.2013, 17:50) Link 2) доходит ли выполнение до этого места ? (p.eraseRect(50, 50, 720, 492) Конечно, так как MyDraw(); выполняется, а если не доверять этой функции, то можно написать qDebug() << "test"; и это слово выводиться значит доходит. Цитата(Алексей1153 @ 16.1.2013, 17:50) Link 3) и что делает MyDraw ? Рисует картинку по значениям из двухмерного массива. |
|
|
|
|
Алексей1153 |
16.1.2013, 19:04
Сообщение
#22
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
zuze,
1) а энтот MyDraw у тебя точно только отсюда вызван ? 2) почему в эту функцию не передал p ? |
|
|
|
|
zuze |
16.1.2013, 19:17
Сообщение
#23
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Алексей1153 @ 16.1.2013, 19:04) Link 1) а энтот MyDraw у тебя точно только отсюда вызван ? Да, только здесь вызывается. Цитата(Алексей1153 @ 16.1.2013, 19:04) Link 2) почему в эту функцию не передал p ? Так как там свой элемент класса QPainter. |
|
|
|
|
Алексей1153 |
16.1.2013, 19:21
Сообщение
#24
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
ну это точно ошибка, не должно быть двух паинтеров. Рисуется на одном же!
|
|
|
|
|
zuze |
17.1.2013, 7:33
Сообщение
#25
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Алексей1153 @ 16.1.2013, 19:21) Link ну это точно ошибка, не должно быть двух паинтеров. Рисуется на одном же! А почему? Рисую область чёрную с помощью одного элемент класса QPainter, а картинки рисую с помощью другого элемент класса QPainter. Чёрная область отображается и картинки отображаются тоже, Только перед рисованием картинок чёрная область не стирается, как я понял не перерисовывается почему-то. Пробовал после стирание сразу update() делать не помогло. |
|
|
|
|
Алексей1153 |
17.1.2013, 7:36
Сообщение
#26
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
передай указатель в функцию и рисуй на нём, что тут спорить то )))
|
|
|
|
|
zuze |
17.1.2013, 9:25
Сообщение
#27
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Алексей1153 @ 17.1.2013, 7:36) Link передай указатель в функцию и рисуй на нём, что тут спорить то ))) Сделал. Теперь вызов функции такой: А в нутри функции я всё равно не могу очистить перед рисованием картинки, делаю так: Значит ни в этом дело. Что же ещё может быть? |
|
|
|
|
Алексей1153 |
17.1.2013, 10:36
Сообщение
#28
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
1) код MyDraw покажи. Что за t ?
2) что ты там очищаешь, я так и не могу понять, если честно. Рисуй картинку и всё )) приложи уже проект, что ли |
|
|
|
|
zuze |
18.1.2013, 12:48
Сообщение
#29
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0
|
Я сделал так. Создал новый проект в котором одна вертикальная линия двигается через 3 секунды по своему таймеру. а другая линия двигается через 5 секунд по своему таймеру. Тут всё работало идеально. Тогда я закомментировал код в функции рисования и функции-слот таймера и вставил туда код рисования одной из этих двух линий (не важно какой). Всё прекрасно заработало. Так я понял, что подвисание таймера линии были из-за того что в функции-слот таймера были слишком много циклов или что было много циклов в функции-слот таймера и в функции рисования.
Если я могу убрать циклы из функции рисования через Qpixmap, то как убрать циклы при заполнении массива в функции-слоте? Ниже код, где идёт цикличное заполнение массива. Использованные переменные имеют типы:
|
|
|
|
|
Алексей1153 |
18.1.2013, 14:15
Сообщение
#30
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
считай всё одним махом, а не по байтику
ещё можно проекцией файла воспользоваться: не компилировал ) ещё - можно один раз загрузить из файла, зачем это каждый раз делать ? |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 7.1.2026, 15:14 |