Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
1-89246
GreySerg
2003-10-14 17:22
2003.10.27
Есть ли в Delphi стандартная функция FileSize (FileName: string)


7-89603
Nick_Omsk
2003-08-16 09:35
2003.10.27
Синхронизация внешних событий с потоком


1-89248
Egor
2003-10-14 20:12
2003.10.27
Требуется написать программу на лицензионном Delphi 6


14-89475
race1
2003-10-09 17:07
2003.10.27
modelmaker


14-89516
Alexious
2003-10-07 12:52
2003.10.27
Учеба