|
|
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
Ваяю для целей универсальности и кроссплатформа свою обертку вокруг различных рендеров. Предпологается простой и удобный интрефейс без заморочек с нюансами платформ. По мотивам VCL TCanvas. Режимы отрисовки с использованием: GDI GDI+ Graphics32 Direct2D FMX renderer Пока пре-альфа версия, но мой ГИС уже через нее рендерит под Win32/Win64/Linux/Android. Яблочную продукцию не проверял в связи с отсутствием таковой. CanvasEx.pas Код: pascal 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. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. Работает как то так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Мысли есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 00:29:26 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
rgreat, Этот путь так или иначе проходили все создатели кроссплатформенных библиотек. Мысли с ходу: 1. Почему координаты integer? 2. Юнит в пакет уже не вслючить 3. Расширяемость примерно нулевая. Если делать нормально, то канвас, пен, браш и.тд. должны быть полностью абстрактными классами. 4. Где трансформы? Без них ценность стремится к нулю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 01:20:10 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
rgreat, ещё не хватает регионов save\restore из движков ещё AggPas можно добавить PS: За что всегда не любил TCanvas, так это за кривоватую архитектуру, а тут просто калька с неё. Это превращает библу в ширпотреб вроде bgrabitmap ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 06:56:12 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
rgreatВаяю для целей универсальности и кроссплатформа свою обертку вокруг различных рендеров. Предпологается простой и удобный интрефейс без заморочек с нюансами платформ. По мотивам VCL TCanvas. Режимы отрисовки с использованием: GDI GDI+ Graphics32 Direct2D FMX renderer Мысли есть? Есть. Всё написано до нас: Asphyre Platform eXtended Library Очень, очень мощная штука с универсальным канвасом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 08:42:16 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
rgreat, зачем столько нулевых констант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 09:46:58 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahovrgreat, зачем столько нулевых констант? Да, довольно занимательно ))) Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 09:52:41 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
Возможно, стоит еще посмотреть на TeeChart в плане интерфейса, они давно свой TeeCanvas пишут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 10:52:03 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
defecatorОчень, очень мощная штука с универсальным канвасом Да, хорошая штука. Мне тоже понравилась ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 10:54:53 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahovrgreat, зачем столько нулевых констант?Криворукость. :) Надо не AND а OR конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 11:57:27 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
asviridenkovrgreat, Этот путь так или иначе проходили все создатели кроссплатформенных библиотек. Мысли с ходу: 1. Почему координаты integer? Для большей совместимости по коду с классическими TCanvas. Скорей всего будет больше overload-ов с float. 2. Юнит в пакет уже не вслючить Было бы желание. 3. Расширяемость примерно нулевая. Если делать нормально, то канвас, пен, браш и.тд. должны быть полностью абстрактными классами.Да я просто в основном коде что надо допишу. Зачем так усложнять? 4. Где трансформы? Без них ценность стремится к нулю.Мне пока за всю жизнь не пригождались. Обходился математекой. Потому не приоритет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 12:16:42 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)rgreat, ещё не хватает регионов Планироал добавить позже. save\restore Ага, хорошая идея. из движков ещё AggPas можно добавить Он стоит того? PS: За что всегда не любил TCanvas, так это за кривоватую архитектуру, а тут просто калька с неё. Это превращает библу в ширпотреб вроде bgrabitmapА что там с архитектурой тебя не прет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 12:21:29 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
defecatorЕсть. Всё написано до нас: Asphyre Platform eXtended Library Очень, очень мощная штука с универсальным канвасом.Интересно. Смотрю. Только там какие-то примеры замороченные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 12:32:13 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
rgreatdefecatorЕсть. Всё написано до нас: Asphyre Platform eXtended Library Очень, очень мощная штука с универсальным канвасом.Интересно. Смотрю. Только там какие-то примеры замороченные. ничего там не заморочено, всё примитивно до безобразия. На FormCreate: указываешь, что будет использоваться - DirectX, OpenGL или OpenGL ES: Код: pascal 1. создаешь девайс и рабочий канвас: Код: pascal 1. 2. определяешь обработчики: Код: pascal 1. 2. в первом (он основной) будет обрабатываться собственно рендеринг, во втором - что угодно, обычно там клава/мышь, но можно и забить. простейшее содержимое: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. запускаешь внутренний таймер: Код: pascal 1. 2. 3. ну и самой главное, где всё и происходит - обработчик RenderEvent, в котором рисуешь всё, что хочешь и как хочешь. Только надо не забыть, что отрисовка сцены там будет в том порядке, в котором написан код. В примерах к Asphyre есть пример Basic, вот там всё, что нужно, оттуда можно брать код как шаблон. Я всегда так делаю, просто копирую проект к себе, и переписываю RenderEvent и ProcessEvent Больше ничего. В библиотеке есть также построитель интерфейса на базе Asphyre и нужные тулзы для рендеринга спрайтов, шейдеров, шрифтов. А если сверху добавить движок XParticles, тоже писанный на Pascal, то разработка вот таких игр - плёвое дело в плане графики: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 12:53:44 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
rgreat, а как насчет идеи сделать TCanvasEx наследником TCanvas, перегрузив всё что возможно? Для совместимости с остальными компонентами? Фантазирую, например подсунуть его потом FastReport'у. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 13:30:43 |
|
||
|
TCanvasEx
|
|||
|---|---|---|---|
|
#18+
Кроик Семён rgreat, а как насчет идеи сделать TCanvasEx наследником TCanvas, перегрузив всё что возможно? Для совместимости с остальными компонентами?Имхо это не реально. Почти все библиотеки используемые для рисования не совместимы с TCanvas. Фантазирую, например подсунуть его потом FastReport'у.Тут другая идея. Можно взять этот самый TCanvas после отработки этого самого FastReport, прицепить к нему TCanvasEx и дорисовать что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 13:40:31 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39470682&tid=2042157]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
18ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 357ms |

| 0 / 0 |
