Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Есть форма, не ней панель(и) на панели кнопки, ричтекстбоксы, пиктуребоксы и/или любые другие контролы. Запускаем приложение, жмём на одну из кнопок и получаем файл *.bmp на котором изображена одна(любая) из панелей и всё что на ней есть. Вот такая задачка. Как "снять" изображение с панели? Варианты? ----------------------------------------------------------------------------- Нет худа без добра, да и добро без худа - чудо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 15:26 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. WBR, Roman S. Golubin ICQ UIN: 63253392 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 17:18 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Спасибо. Прямо сразу готовое решение - круто. НО, работает не очень правильно. Создал тестовое приложение, форму с парой контролов и кнопкой. Давлю на кнопку - отрабатывает ф-ия. Результат: см. картинку. всё черное и только кнопка отрисована. ------------------------------------------------------------------------- Нет худа без добра, да и добро без худа - чудо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 17:39 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Писал на скорую руку так как домой пора. Домой приеду - посмотрю, если время будет. Или уже завтра только. ОК? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 17:47 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Roman S. GolubinПисал на скорую руку так как домой пора. Домой приеду - посмотрю, если время будет. Или уже завтра только. ОК? Конечно ОК. Большое спасибо. Не морочте себе голову дома. Я никуда не тороплюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 17:51 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Проблема была в том, что сначала надо отображать background, а только потом сам элемент. Следующий кусок кода делает это правильно. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 10:34 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Ещё раз спасибо за помощь. Вчера я не работал, потому запоздало отвечаю. Теоретически после отрисовки бэкграунда нужно вызвать метод отрисовки текста на контроле и прилепить это сверху бэкграунда. Но вот как это сделать? У листбкса можно ещё с методом DrawItem поиграться, а у текст бокса ничего похожего нет.... Можно достучаться до самого текста, преобразовать его в графику и прилепить сверху, НО как быть если текст не помещается по длине на одной строке контрола и занимает несколько? Я то после преобразования буду иметь длинную картинку с текстом в одну строку. Как мне его ломать? Я не знаю. Если у кого-то ещё мысли возникнут, прошу писать сюда. ------------------------------------------------------------------------- Нет худа без добра, да и добро без худа - чудо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 12:28 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что многие контролы после отрисовки бакграунда и собственно самого контрола дорисовывают картинку прямо в контекст рабочего стола функциями типа FillReversibleRectangle - как их отследить я понятия не имею. Как вариант есть еще снятие копии изображения с окна напрямую с помощью WinAPI, но работать он будет только под Windows, потому этот вариант, имхо, не есть очень гуд: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:13 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Да, так действительно работает и мне в принципе всё равно, что только для виндовса. Дело в другом: задачка сложнее. Мне нужно "снять" изображение с панели а не с формы. Проблема в том, что панель, и соответственно контролы на ней, может быть не вся видна на форме, например если панель больших размеров чем форма, а невидимая часть панели доступна по скроллу. В этом случае я получаю изображение видимой части панели, остальное обрезается. ------------------------------------------------------------------------- Нет худа без добра, да и добро без худа - чудо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 15:15 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Тогда только вариант с InvokePaint и InvokePaintBackground, но т.к. майкрософтам было лениво переписать все элемены под .Net и они использовали ActiveX и WinAPI, то большинство контролов будут отображаться некорректно. А сделано это, я думаю, специально, что бы дать заработать всяким разным дочкам с системами CrystalReports - как вариант ухода от налогов, а бьет в первую очередь по пользователям .Net Framework. PS: Ну, или еще как вариант - перебирать все элементы, позиционировать их в место, где они будут видны, снимать экранную копию с каждого в отдельности и потом добавлять ее в общую картинку... но, имхо, геморойно будет, да и пользователю наверно будет неприятно видеть мелькающие элементы :-) Или, как еще вариант - хук на форму (возможно и на все контролы на форме и перехват... но это все извраты - самый честный вариант - переписать все контролы на чистом .Net (без API и ActiveX) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 15:59 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Roman S. GolubinА сделано это, я думаю, специально, что бы дать заработать всяким разным дочкам с системами CrystalReports - как вариант ухода от налогов, а бьет в первую очередь по пользователям .Net Framework. то есть, есть возможность (попробовать) решить эту задачку с помощью CrystalReports или я чего-то не правильно понял? Могу я из CrystalReports получить на выходе картинку(jpg,bmp...) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 16:44 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
CrystalReports работает только со своими собственными компонентами, вроде... и для печати отчетов заточена, а не форм. Речь выше шла о том, что майкрософт сделала все что бы усложнить жизнь обладателям голого фреймворка при печати отчетов с формы (согласись, это было бы слишком просто, если бы все работало и сразу), содрать с наиболее богатых из них побольше денег, втюхав им Crystal Reports, и уйти от претензий антимонопольного комитета (читай - уплаты налогов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 17:12 |
|
||
|
Как получить Битмап из Панели?
|
|||
|---|---|---|---|
|
#18+
Roman S. GolubinCrystalReports работает только со своими собственными компонентами, вроде... Пынятно. Ende Gelaende! (приплыли!) :) Ладно спасибо за помощь. Тему можно закрыть. Буду искать другие подходы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 17:17 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=32777267&tid=1437935]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 342ms |

| 0 / 0 |
