|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
БенедиктЕсли хотите задать вопросы, задайте вопросы.Ruskкакой цвет задать в третьем аргументе для прозрачности ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 10:47 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
БенедиктRusk, у нас тоже всё хорошо. Если хотите задать вопросы, задайте вопросы. Очень рад за Вас. А сейчас вопрос (с) Какой цвет задать в третьем аргументе BackColor, вашей функции CombinePicMask, для прозрачного фона? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 11:03 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Rusk, У меня нет Офиса 2007, поэтому ответ теоретический: скорее всего, никакой, так как прозрачность ожидается обеспеченная не chromakey-ем (специально выбранным цветом), а картой (полу)прозрачности - 1-битной (прозрачно/непрозрачно) для изображений с цветностью до 8 бит включительно, 8-битной (256 градаций прозрачности) для 24-битных изображений. Нравится ответ? Если не нравится, давайте поэкспериментируем, и попробуем подсунуть в Ribbon 32-битную иконку с альфа-каналом (карта полупрозрачности). Берите базу и файлы из 10701376 . Из базы понадобится класс cAlphaDibSection. Понадобится также такой модуль: Код: 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. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 13:55 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Спасибо, Бенедикт! Ну, у Вас и код! Я там ничего не понял ;(пока нет времени разбираться), Короче, сделал AS IS. Вот процедура, вызываемая Риббоном - она НЕ СРАБОТАЛА. Причем ошибок не выдает, а иконка на кнопке - пустая. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Попробовал записать иконку в файл и загрузить из файла в Рибоон, и все ПОЛУЧИЛОСЬ, с прозрачностью Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Значит мы на верном пути. Вот это видать не работает Код: plaintext 1.
Теперь вопрос, как получить объект IPictureDisp из переменной cImg , чтобы избежать записи в файл? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 16:04 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
RuskТеперь вопрос, как получить объект IPictureDisp из переменной cImg , чтобы избежать записи в файл?Функцией CreateIPictureDispFromHBITMAP выше по теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 16:18 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
третьим параметром ей указывайте False. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 16:22 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Rusk, Не очень хорошо получается с третьим параметром, отвечающим за владение GDI-объектом (битмапом). Если владельцем оставлять экземпляр cAlphaDibSection (третий параметр равен False), то нужно, чтобы этот экземпляр был "жив", пока используется IPictureDisp, оборачивающий битмап. Если владельцем делать IPictureDisp (True), то нужно, чтобы деструктор cAlphaDibSection.Class_Terminate не уничтожал битмап. Сделайте так: введите в cAlphaDibSection свойство, отвечающее за (не)выполнение строчки DeleteObject m_hDIb в методе ClearUp, и вызывайте CreateIPictureDispFromHBITMAP с третьим параметром, равным True (значение по умолчанию). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 16:38 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
БенедиктRusk, Не очень хорошо получается с третьим параметром, отвечающим за владение GDI-объектом (битмапом). Если владельцем оставлять экземпляр cAlphaDibSection (третий параметр равен False), то нужно, чтобы этот экземпляр был "жив", пока используется IPictureDisp, оборачивающий битмап. Если владельцем делать IPictureDisp (True), то нужно, чтобы деструктор cAlphaDibSection.Class_Terminate не уничтожал битмап. Сделайте так: введите в cAlphaDibSection свойство, отвечающее за (не)выполнение строчки DeleteObject m_hDIb в методе ClearUp, и вызывайте CreateIPictureDispFromHBITMAP с третьим параметром, равным True (значение по умолчанию). Извините за может быть глупый вопрос, а что передавать в первом и втором параметре? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 16:51 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Rusk, В первом передавать cImg.hDib. Во втором 0 или ничего (опускать параметр). Попробуйте для начала без изменений в классе сделать просто Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 17:05 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Вообще, хорошо бы было бы оформить получение IPictureDisp , как метод (функция) класса cAlphaDibSection . ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 17:06 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
БенедиктRusk, В первом передавать cImg.hDib. Во втором 0 или ничего (опускать параметр). Попробуйте для начала без изменений в классе сделать просто Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Получается пустое место - вместо иконки. А насчет, Бенедикти заставить Ribbon затем перерисоваться (поместить сверху какое-то окно, а затем убрать, например). Возможно, Ribbon делает копию битмапа в себе, тогда его можно спокойно убивать в своём коде. По-видимому, Ribbon действительно делает копию битмапа себе, потому что функция GetImage32 вызывается только один раз. Только вызов его метода Invalidate, вызывает перезапрос картинок. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 17:18 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Rusk, Вы это можете сделать за 10-15 секунд самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 17:18 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
БенедиктRusk, Вы это можете сделать за 10-15 секунд самостоятельно. Осталось только заставить работать CreateIPictureDispFromHBITMAP ... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 17:22 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Rusk, раз пустое место, значит... ничего не значит. Что за параметры (Control, ByRef image), и как вызывается функция GetImage32? Где и как происходит передача IPictureDisp в Ribbon? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 17:28 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Хорошо, сделаем шаг назад. Вот это отлично работает: Rusk... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
БенедиктRusk, раз пустое место, значит... ничего не значит. Что за параметры (Control, ByRef image), и как вызывается функция GetImage32? Где и как происходит передача IPictureDisp в Ribbon? Короче, Риббон создается и загружается ввиде xml-строки при открытии базы Код: 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.
Обратите внимание на строчку, начинающуюся <button id=""btnTest3"" А дальше по тексту идет вышеуказанная функция GetImage32, которую Риббон вызывает при необходимости нарисовать картинку для кнопки btnTest3. При этом передает в первом параметре - IRibbonControl, собственно, сам объект кнопки, а второй параметр - ByRef image AS IPictureDisp, куда надо передать объект картинки. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 17:50 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Вобщем, осталось вот это разрулить, без файла Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 17:55 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Rusk, Понятно, спасибо. Давайте тогда по второму варианту. В класс внесите следующие изменения: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 17:56 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
УРА, ПОЛУЧИЛОСЬ!!!! Большущее СПАСИБО, Бенедикт! Теперь, можно будет замутить, что-нибудь, типа загрузки картинок в Риббон из таблицы, предварительно, сохранив туда файлы bmp и их "альфа-маски". Тут на форуме, что-то видел с ключевым словом BLOB... Прикладываю файл, наших экспериментов, для всех интересующихся. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 18:32 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Rusk, пожалуйста. Тогда легче сразу результирующий 32-битный битмап хранить в таблице. Собственно, в той же базе функция LoadPictureUsingStream() служит для получения IPictureDisp из байтового массива. А уж байтовый массив считать из BLOB-а задача тривиальная. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 19:13 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Добрый день! Бенедикт, Вот нашел я коллекцию .png картинок с альфа-каналом, что-то не получается их загрузить в Access. LoadPicture - ругается - Invalid Picture. А при сохранении в Paint (Win7), как BMP - теряется прозрачность (о чем и появляется предупреждение). Как загрузить .png ума не приложу? Спасибо за ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2011, 12:48 |
|
Рисунок для набора вкладок
|
|||
---|---|---|---|
#18+
Rusk, загрузить .PNG можно с помощью GDI+. По идее, всё должно быть просто, но проверяйте: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 01:48 |
|
|
start [/forum/topic.php?fid=45&gotonew=1&tid=1626597]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 388ms |
0 / 0 |