|
|
|
Использование 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, 00:03 |
|
||
|
Использование 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, 04:32 |
|
||
|
Использование 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, 11:38 |
|
||
|
Использование Panel в DirectX
|
|||
|---|---|---|---|
|
#18+
в обработчике Application.Idle рисовать нужно, в сети полно примеров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 12:33 |
|
||
|
Использование Panel в DirectX
|
|||
|---|---|---|---|
|
#18+
Изопропилв обработчике Application.Idle рисовать нужно, в сети полно примеров Попробовал, во вьюпорте в середине вращается куб и с этим обработчиком он делает это очень медленно и прерывисто. Я так понимаю, что событие onPaint в учебниках дано потому что оно работает с большой скоростью, которая обеспечивает гладкое движение(вращение, например). Т.е. нужно найти какое-то средство, которое бы позволяло обновлять сцену с такой же скорость как и onPaint. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 12:59 |
|
||
|
Использование Panel в DirectX
|
|||
|---|---|---|---|
|
#18+
Разобрался, сделал через потоки. Вроде хорошо работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 13:28 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38101239&tid=1341976]: |
0ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 503ms |

| 0 / 0 |
