Мой код -> отображение файла стерео .wav формы волны
max_l и max_r здесь - это наивысшее значение формы волны в каждом канале.
form2:= TForm2.Create(self);
form2.Image1.Visible := true;
form2.Image1.Width := numsamples;
form2.Image1.Height := max_l * 2;
form2.Image1.Canvas.Lock;
form2.Image1.Canvas.MoveTo(0,mid);
form2.Image1.Canvas.Pen.Color := clRed
form2.Image2.Visible := true;
form2.Image2.Width := numsamples;
form2.Image2.Height := max_r * 2;
form2.Image2.Canvas.Lock;
form2.Image2.Canvas.MoveTo(0,mid);
form2.Image2.Canvas.Pen.Color := clRed
x:=0;
for i := 0 to numchannels do begin
if i mod 2 = 0 then begin
form2.Image2.Canvas.MoveTo(x,max_r);
form2.Image2.Canvas.LineTo(x,max_r+buff[i]);
x:=x+1;
end
else begin
form2.Image1.Canvas.MoveTo(x,max_l);
form2.Image1.Canvas.LineTo(x,max_l+buff[i]);
end;
end;
Я хочу знать, сколько стоит максимальная высота и ширина TImage Delphi? Потому что я пытаюсь нарисовать полную картину всей формы волны файла .wav. Например, теперь у меня есть image1.height = 23000 больше и проблема EOutOfResource или, может быть, в моем коде есть ошибка ?. Любое предложение будет оценено, спасибо.
EDIT1: также я попытался использовать draw bmp, а затем изменить его размер с помощью метода stretchdraw, но он тоже не работает, вот мой код, и основная идея состоит в том, что сначала я рисую супер большой исходный размер в BMP, а затем сжимаю его с помощью функции StretchDraw, а затем нарисуйте его в TImage. Но все же растровое изображение также возвращает мне ту же проблему EOutOfResources.
form2:= TForm2.Create(self);
form2.Image1.Visible := true;
bmp:=TBitmap.Create;
bmp.Height:=max_l*2;
bmp.Width:=numsamples;
bmp.Canvas.Pen.Color:=clRed;
bmp.Canvas.MoveTo(0,max_l);
x:=0;
for i := 0 to numchannels do begin
if i mod 2 = 0 then begin
bmp.Canvas.MoveTo(x,max_r);
bmp.Canvas.LineTo(x,max_r+buff[i]);
x:=x+1;
end;
end;
newwidth:=1000;
newheight:=500;
bmp.Canvas.StretchDraw(rect(0,0,newheight,newwidth),bmp);
form2.Image1.Canvas.Draw(0,0,bmp);