Форум: "Основная";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
Внизcanvas Найти похожие ветки
← →
race1 (2003-10-12 07:53) [0]я рисую на канве разные свои значки. всё летает! есть зуминг.
но при размерах канвы более примерно чем 1600\1600 (т.е. при увеличении изображения) канва при отрисовке начинает подтормаживать. притом я ещё рисую некоторые линии при помощи Pen.Mode=pmNot(при движении мышки) - всё рисуется вне зависимости от размера канвы. но сама перерисовка непосредсвенно при зуминге тормозит. это может быть абсолютно пустая канва - тоже тормозит
а при увеличении канвы до 4000\4000 ругается на нехватку памяти, когда в taskmanagere память не расходуется
← →
Zergling (2003-10-12 08:36) [1]Ну вы батенька и садист.
← →
Zergling (2003-10-12 08:55) [2]> это может быть абсолютно пустая канва - тоже тормозит
Как это понимать? Если это TImage - то память отводится независемо от того есть ли чего на канве. Вспомнился мне один программер (с зумменгом тоже парился). Так он тебя переплюнул :). Создал BitMap размером 8000х14000 точек. Был комп PIII, 512 Мб оперативки, ну и своп он в системе помтавил 500 Мб. На нехватку памяти уже не ругалась, а какбы для оптимизации работы :-))) выбрал операционнку на ядре NT.
А все из-за того, что было лень делать нормальный зумминг (он использовал ClipRect или BrushCopy для этих целей, в итоге увеличенное избражение было жутко квадратным :-))
← →
Delphi5.01 (2003-10-12 09:13) [3]Samoe realnoe eto ispolzovat TBitMap, d etom sluchae kanva naxoditsa v osu i vse deistvia proisxodat ochen pistro, a dla zuma ispolzovat StretchBLT, BitBlt.
Jelau udachi!
← →
Yegrez (2003-10-13 14:40) [4]ну вопервых, что используем в кач-ве контрола для отображения, вовторых: когда же вы начнете все называть своими именами!? Канва не тормозит, а тормозит тот кто на ней рисует :). По всей вероятности увеличиваем размеры хранящегося в памяти имеджа, скажу больше - при дальнейшем увеличении масштаба все вообще пропадет, т.е. ничего не увидим, по хорошему для анализа нуна процедура рисования, в ней желательно отрабатывать ClipRect; при зумировании не изменять ни размер исходного изображения ни контрола юзаемого для отображения, для номаного скроллинга нада объяснить скроллбару как все делать и руками обрабатывать скроллинг, хошь узнать - спроси у меня как :)
← →
REA (2003-10-13 14:53) [5]При отрисовке надо учитывать, что точки >32000 могут рисоваться где угодно (ограничение W98, старшие версии возможно этого ограничения не имеют).
← →
race1 (2003-10-13 15:40) [6]>Yegrez (13.10.03 14:40) [4]
вот! вот что мне нужно :) ваши знания ;)
вобщем так. мы имеем скроллбар, на нём панель, на панели TPaintBox с Align=Client. при зуминге увеличиваются размеры панели => увеличиваются размеры канвы паинтбокса. мне бы этого не хотелось.
теперь дальше - как все нормальные люди сначала я рисую на временном канвасе, который я беру у битмапа, который просто сидит в памяти. интуитивно я понимаю, что при отрисовке паинтбокса нужно выставлять размеры временного канваса согласованно с TPaintBox.Canvas.ClipRect. здесь понятно.
но непонятно как избежать увеличения панели и паинтбокса и что бы работали скроллбары!
насчёт процедуры рисования - там нечего анализировать :) просто рисуем кружочки :)
это мои первые шаги на пути такого рисования, прямо сказать тотального контроля действий юзверя :) раньше я юзал регионы окошек. т.е. вместо нарисованного на канве кружочка я создавал окошко с регионом как кружочек ;) было гораздо проще, но как-то помастадонски :)
← →
Zergling (2003-10-15 06:17) [7]race1 © (13.10.03 15:40) [6]
Почту проверь
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.027 c