【发布时间】:2019-09-13 07:57:23
【问题描述】:
希望这很清楚......
我想知道 PaintBox 控件是否可以允许用户从左到右滚动数据?想象一下它就像一个示波器显示器,其中一次捕获允许缩放和滚动。在这种情况下,我不需要缩放。所以,我的 Paintbox 是 800x600,我的数据集是 16000x600。
我可以在 800x600 区域绘制如下图,完全没有问题,并且可以应用缩放来获取所有数据,但我想保持 Y 轴缩放为 1 并且能够向左滚动/拖动/right 并查看数据。
for J := 1 to ((Form1.Memo1.Lines.count)-1) do
begin
MyTorques[J] := StrToInt(Form1.Memo1.Lines[J]);
Tqmult := ((StrToInt(Label6.Caption) + 500) Div 600);
Ycalc[J] := ((MyTorques[J]) Div Tqmult);
InvY[J] := (600 - (Ycalc[J]));
X1 := (J-1);
Y1 := InvY[J-1];
X2 := (J);
Y2 := InvY[J];
with PaintBox1.Canvas do
begin
pen.Style := psSolid;
pen.Color := clBlack;
pen.Width := 1;
moveto(X1, Y1);
Lineto(X2, Y2);
Label51.Caption := IntToStr(X1);
Label52.Caption := IntToStr(Y1);
Label28.Caption := IntToStr(X2);
Label29.Caption := IntToStr(Y2);
Label35.Caption := IntToStr(Tqmult);
Label37.Caption := IntToStr(Ycalc[J]);
Label39.Caption := IntToStr(InvY[J]);
Label41.Caption := IntToStr(MyTorques[J]);
end;
if MyTorques[J] < Smallest Then
Begin
Smallest := MyTorques[J];
SmallestIndex := J;
end;
if MyTorques[J] > Largest Then
begin
Largest := MyTorques[J];
LargestIndex := J;
end;
Label30.Caption := IntToStr(Smallest);
Label31.Caption := IntToStr(SmallestIndex);
Label32.Caption := IntToStr(Largest);
Label33.Caption := IntToStr(LargestIndex);
end;
那么,我的paintbox.canvas 是否需要大小为 16000x600,并在顶部大小为 800x600 的上方设置一个“窗口”,并且可以通过垂直和水平约束拖动 Paintbox 控件?
【问题讨论】:
-
添加一个滚动条并使用它的位置来计算整个数据集的可见窗口。使用图表库要容易得多。
-
您是否考虑过使用 Delphi 附带的 TChart 组件?
-
TChart 是调色板中的一个组件吗?我没有(搜索图表),但这是使用 Delphi 社区版的结果吗?
-
是的,在
TeeChart Std中,至少在我的 Delphi 10.2.3 Tokyo Professional 中。也应包含在 10.3 Rio CE 中。 AFIK,社区版与专业版相同,只是使用了另一个许可证。也许你只是没有安装 TChart 组件? -
进行了重新安装,这是在此过程中的一个选项。打算试一试,谢谢 Delphi Coder。
标签: delphi delphi-10.3-rio paintbox