![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Начём нарисовать? [D7, WinXP]
clampo © (2006-01-23 02:18:00)Здрасте. Подскажите, пожалуйста начём лучше рисовать визуализатор звука(очень быстро меняется картинка), и как рисовать без мерцания
Fenik (2006-02-10 00:01:00) [1]> antonn © (24.01.06 09:55) [6]
> рисовать на буфферном TBitmap, выводить его через BitBlt()
И причем выводить только ClipRect
Ling (2006-02-09 19:51:00) [2]
> antonn
DoubleBuffered не глючит с манифестом... даже дети этот баг исправлять умеют.
antonn (2006-02-02 09:36:00) [3]чье? мое? в анкете есть.
clampo (2006-02-02 05:01:00) [4]antonn, скажи мыло, так на всякий
clampo (2006-02-01 14:11:00) [5]Я понял: у меня массив для показа лагует
antonn (2006-01-31 11:10:00) [6]
>for i:=0 to 25 do
> BandOut[i]:= x; все столбци одинаковой длинны, пАчемуто
это наверно потому, что в каждый эдемент массива записывается одно и тоже значение:)
а так?
for i:=0 to 25 do begin
x:=i+(m[i div nc*nc+nc-1]-s);
BandOut[i]:= x;
end;
clampo (2006-01-31 09:58:00) [7]
m:array[1..bufSize*nc] of smallInt;массив
его заполнение (s - пост. меняющаяся величина)
x:=i+(m[i div nc*nc+nc-1]-s);
for i:=0 to 25 doработает, но каряво
BandOut[i]:= m[i];
for i:=0 to 25 doвсе столбци одинаковой длинны, пАчемуто
BandOut[i]:= x;
antonn (2006-01-31 04:53:00) [8]да так же. вообще, покажи свой массив (или там одна переменная?) и его диапазон(максимальные уровни).
приведи пример.
var i:integer;
begin
for i:=0 to 15 do
BandOut[i]:= ; //ну подставь сюда переменную, или элемент своего массива
clampo (2006-01-30 21:27:00) [9]Прошу прощения за "опечатку" я хотел сказать:
Я это уже понял. Как сделать чтоба всё тоже самое, только не ч\з рандом, а ч\з др пост. меняющеюся велечину? теперь наверно панятно?
antonn (2006-01-30 18:32:00) [10]т.е. для всех уровней использовать 1 переменную, и чтоб они были одинаковы? в цикле прогнать
var i:integer;
begin
for i:=0 to 15 do
BandOut[i]:=25;
или еще лучше, в процедуре рисования сразу рисовать одинаковые столбцы, без передачи массива. Только нафига вообще нужны эти столбцы?..
вообще, что то я плохо понимаю...
clampo (2006-01-30 18:02:00) [11]Я это уже понял. Как сделать чтоба всё тоже самое, только не ч\з рандом, а ч\з др пост. меняющеюся велечину все одинаковые?
antonn (2006-01-30 08:22:00) [12]clampo © (30.01.06 4:38) [28]
ну через рандом - потому что для каждого столбца выбирается случайная высота, от 0 до 33. 33 - это максимальная высота.
> а ч\з др пост. меняющеюся велечину все одинаковые
а эта величина для всех столбцов используется?
з. танька (29.01.06 20:52) [26]
чего то я не понял... :)
clampo (2006-01-30 04:38:00) [13]Ктонить ответит на ?: Почему ч\з random(34) у всех пиков разная высота, а ч\з др пост. меняющеюся велечину все одинаковые. (др велечина меняецца с той же частотой(примерно)и в тех же пределах)?
Gero (2006-01-29 21:05:00) [14]> информация лишний раз будет копироваться туда-сюда как дура
LOL
з. танька (2006-01-29 20:52:00) [15]непонятно зачем все советуют этот DoubleBuffered. ну ресуется в памяти сначала и шо? всё равно если нарисовать 10 объектов на канвасе он 10 раз обновится и пофигу дабл он или не дабл. только информация лишний раз будет копироваться туда-сюда как дура. даблбуфферед на самом деле нужен для панелей в которых много компонентов и для форм а вовсе не для того о чем некоторые думают.
clampo (2006-01-29 16:46:00) [16]запутался я чё-то
Gero (2006-01-29 14:20:00) [17]> Я потому и пришел к выводу, что это у формы doublebuffed
> неправильно реализован.
А он у нее вобще не реализован. DoubleBuffered и его использование наследуется от TWinControl, как у панели, так и у формы.
Как я уже говорил, виной всему кривая работа с темами.
antonn (2006-01-29 14:14:00) [18]Gero © (29.01.06 13:35) [22]
DoubleBuffeder не виноват, виной неправильная работа с темами.
просто, если на панель поместить элементы(у меня stringgrid'ы были) и выставить у этой панели doublebuffered, то бага не наблюдается. А если у формы выставить, то баг есть. Надо еще над фреймами поиздеваться... Я потому и пришел к выводу, что это у формы doublebuffed неправильно реализован.
clampo © (29.01.06 12:34) [21]
Вот так вроде работает, но очень коряво:BandOut[i]:=m[i], где m:array[1..bufSize*nc] of smallInе, bufSize-"уровень" звука со звукавухи
да я для примера свой массив придумал, передавай сразу свой, и работай с ним:) может у тебя там больше столбцов(вроде обычно 25 штук).
Набережных С. © (29.01.06 7:58) [20]
нет, решения не нашел, надеюсь, что в 2006 нет такого, только проверить не могу.
Gero (2006-01-29 13:35:00) [19]> [14] antonn © (28.01.06 20:09)
DoubleBuffeder не виноват, виной неправильная работа с темами.
clampo (2006-01-29 12:34:00) [20]Вот так вроде работает, но очень коряво:BandOut[i]:=m[i], где m:array[1..bufSize*nc] of smallInе, bufSize-"уровень" звука со звукавухи