Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.011 c
4-89648
jonni
2003-08-18 02:51
2003.10.27
подмена WndProc


3-89141
Sedunov Vitaly
2003-10-07 09:10
2003.10.27
@@spid и PacketRecords


6-89414
DNT
2003-09-01 12:03
2003.10.27
Помогите начать


14-89569
Gfa
2003-10-09 23:17
2003.10.27
Зоопарк


6-89435
Dennisius
2003-08-31 20:48
2003.10.27
Копирование





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский