27.08.2012, 16:56
|
Активный
|
|
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
|
|
Цитата:
Сообщение от poli-smen
С TChart не работал - не подскажу. А вот если рисовать на канве, то вот так можно рисовать гистограму:
Код:
var
WavInfo: TWavInfo;
KX, KY: Extended;
i, X, Y, DY, Chanel: Integer;
begin
KX := 1; // Коэффициент пропорциональности по абсциссе
KY := 0.01; // Коэффициент пропорциональности по ординате
DY := Height div 2; // Смещение по ординате
Chanel := 0; // Номер рисуемого канала
Repaint;
for i := Low(WavInfo.Samples) to High(WavInfo.Samples) do
begin
X := Trunc(KX * i);
Y := Trunc(KY * Smallint(WavInfo.Samples[i, Chanel]) + DY);
Canvas.MoveTo(X, DY);
Canvas.LineTo(X, Y);
end;
end;
В этом примере рисуется прямо на форме, но можно переделать и на TPaintBox, на TBitmap и т.п.
А вот так можно рисовать обычную волну:
Код:
var
WavInfo: TWavInfo;
KX, KY: Extended;
i, X, Y, DY, Chanel: Integer;
begin
KX := 1; // Коэффициент пропорциональности по абсциссе
KY := 0.01; // Коэффициент пропорциональности по ординате
DY := Height div 2; // Смещение по ординате
Chanel := 0; // Номер рисуемого канала
Repaint;
for i := Low(WavInfo.Samples) to High(WavInfo.Samples) do
begin
X := Trunc(KX * i);
Y := Trunc(KY * Smallint(WavInfo.Samples[i, Chanel]) + DY);
if i = Low(WavInfo.Samples)
then Canvas.MoveTo(X, Y)
else Canvas.LineTo(X, Y);
end;
end;
|
Класс! Какой полезный код. спасибо!!!!!!
|