参照附件(附件为大福星炒股看行情的图):
问题(1):Delphi一般都是在画布上面画曲线的,但是能否在控件(比如Panel或者Listbox)等容器里面做曲线?
问题(2):左右边的云层状的图形如何制作,而且随着鼠标的移动,云层也随之变化
问题(3):附件中的柱状图形是如何清晰的显示?并且随着上面直线的拖动,柱状图的高度也随着发生变化?
问题(1):Delphi一般都是在画布上面画曲线的,但是能否在控件(比如Panel或者Listbox)等容器里面做曲线?
问题(2):左右边的云层状的图形如何制作,而且随着鼠标的移动,云层也随之变化
问题(3):附件中的柱状图形是如何清晰的显示?并且随着上面直线的拖动,柱状图的高度也随着发生变化?
type
TPanel = class(ExtCtrls.TPanel)
public
procedure Paint; override;
end; TForm1 = class(TForm)
Panel1: TPanel;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}{ TPanel }procedure TPanel.Paint;
begin
inherited;
Canvas.Pen.Color := clRed;
Canvas.Rectangle(10, 10, 100, 100);
end;问题(2):左右边的云层状的图形如何制作,而且随着鼠标的移动,云层也随之变化
问题(3):附件中的柱状图形是如何清晰的显示?并且随着上面直线的拖动,柱状图的高度也随着发生变化?云状图和柱状图都是随数据变换而变化的,当鼠标移动,改变数据时,更新云状图和柱状图所需数据就行了,问题是控制好云状图和柱状图的大小,下面是个图像灰度云状图的例子,其中FGrays是个256大小数组,改变这个数组的数据,云状图也会改变:
procedure TForm1.GrayMapPaint(Sender: TObject);
var
I: Integer;
begin
GrayMap.Canvas.Brush.Color := clSkyBlue;
GrayMap.Canvas.FillRect(GrayMap.ClientRect);
GrayMap.Canvas.Pen.Color := clRed;
GrayMap.Canvas.Brush.Style := bsClear;
GrayMap.Canvas.Rectangle(GrayMap.ClientRect);
for I := 0 to 255 do
begin
GrayMap.Canvas.Pen.Color := RGB(I, I, I);
GrayMap.Canvas.MoveTo(I + 1, 128);
GrayMap.Canvas.LineTo(I + 1, 128 - Round(35.0 * (Log10(FGrays[I] + 1))));
end;
end;