
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
07.01.2013, 00:03
|
|||
|---|---|---|---|
Использование Panel в DirectX |
|||
|
#18+
Код: c# 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. Здравствуйте! Хочу организовать вывод DirectX не на форму, а на панель. Если использовать код в событии OnPaint панели, то она постоянно перерисовывается и при этом происходит постоянное мельтешение цвета, ну и естественно, если рисовать на ней что-нибудь, то ничего не работает. А если использовать код в событии OnPaint формы, то тогда все нормально, но кнопки, которые находятся на форме, сначала выглядят как белые прямоугольники, а принимают нормальный вид, только когда по ним кликнешь. Подскажите пожалуйста как это исправить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.01.2013, 04:32
|
|||
|---|---|---|---|
|
|||
Использование Panel в DirectX |
|||
|
#18+
2 Kokon: Kokon Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Не знаток C#/WinForms, но, насколько я понимаю, надо убрать этот вызов. Потому что он помечает panel1 как требующую перерисовки, что в скором времени приводит к тому, что вызывается обработчик события panel1.Paint, то есть метод panel1_Paint. И так по кругу, до бесконечности, получается постоянная перерисовка: KokonЕсли использовать код в событии OnPaint панели, то она постоянно перерисовывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.01.2013, 11:38
|
|||
|---|---|---|---|
Использование Panel в DirectX |
|||
|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Дело в том, что если написать такой код, т.е. когда рисуется какой-нибудь примитив, то если панель не перересовывается примитив один раз нарисуется и все, никаких других действий не будет. Просто если удалить панель и создание примитива сделать при перерисовки самой формы, то проблем нет, но ведь на форме еще и другие детали нужны(кнопочки, менюшки и т.д.), а получается что вся форма будет занята вьюпортом директа. А если "panel1.Invalidate();" не комментировать, как раз мельтешение идет. Я думаю может проблема в настройках девайса или в PresentParameters. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.01.2013, 12:33
|
|||
|---|---|---|---|
Использование Panel в DirectX |
|||
|
#18+
в обработчике Application.Idle рисовать нужно, в сети полно примеров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.01.2013, 12:59
|
|||
|---|---|---|---|
Использование Panel в DirectX |
|||
|
#18+
Изопропилв обработчике Application.Idle рисовать нужно, в сети полно примеров Попробовал, во вьюпорте в середине вращается куб и с этим обработчиком он делает это очень медленно и прерывисто. Я так понимаю, что событие onPaint в учебниках дано потому что оно работает с большой скоростью, которая обеспечивает гладкое движение(вращение, например). Т.е. нужно найти какое-то средство, которое бы позволяло обновлять сцену с такой же скорость как и onPaint. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.01.2013, 13:28
|
|||
|---|---|---|---|
Использование Panel в DirectX |
|||
|
#18+
Разобрался, сделал через потоки. Вроде хорошо работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&tablet=1&tid=1341976]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 451ms |

| 0 / 0 |
