主要目的是改变三个我自己需要的参数,这个我已经用ScrollBar实现了。但是想做一个扇形的预览图,能够实时随着参数的大小改变,而改变代表三个参数扇形的大小。希望能有高手给出代码。
procedure TParaChooseForm.ScrollBar1Change(Sender: TObject);
var
TempPos1:Integer;
TempPos2:Integer;
begin
TempPos1:=ScrollBar1.Position;
TempPos2:=ScrollBar2.Position;
if (TempPos1+TempPos2)<=100 then
ScrollBar3.Position:=100-ScrollBar1.Position-ScrollBar2.Position
//TempPos:=ScrollBar3.Position;
else
ScrollBar2.Position:=100-ScrollBar1.Position-ScrollBar3.Position;end;procedure TParaChooseForm.ScrollBar2Change(Sender: TObject);
var
TempPos1:Integer;
TempPos2:Integer;
begin
TempPos1:=ScrollBar1.Position;
TempPos2:=ScrollBar2.Position;
if (TempPos1+TempPos2)<=100 then
ScrollBar3.Position:=100-ScrollBar1.Position-ScrollBar2.Position
//TempPos:=ScrollBar3.Position;
else
ScrollBar1.Position:=100-ScrollBar2.Position-ScrollBar3.Position;end;procedure TParaChooseForm.ScrollBar3Change(Sender: TObject);
begin
ScrollBar3.Position:=100-ScrollBar1.Position-ScrollBar2.Position;
end;procedure TParaChooseForm.Timer1Timer(Sender: TObject);
begin Label1.Caption:=IntToStr(ScrollBar1.Position);
Label2.Caption:=IntToStr(ScrollBar2.Position);
Label3.Caption:=IntToStr(ScrollBar3.Position); //Chart1.Series[1].Add(ScrollBar1.Position);
end;procedure TParaChooseForm.FormCreate(Sender: TObject);
begin
//Chart1.Series[1].Add(ScrollBar1.Position);
with Image1 do
begin
//Canvas.Refresh;
Canvas.Brush.Color:=clRed;
Canvas.Brush.Style:=bsSolid;
Canvas.Pie(Image1.Left-1,Image1.Top-1,Image1.Width-1,Image1.Height-1,50,5,300,50);
end;
end;这是我自己的代码。
procedure TParaChooseForm.ScrollBar1Change(Sender: TObject);
var
TempPos1:Integer;
TempPos2:Integer;
begin
TempPos1:=ScrollBar1.Position;
TempPos2:=ScrollBar2.Position;
if (TempPos1+TempPos2)<=100 then
ScrollBar3.Position:=100-ScrollBar1.Position-ScrollBar2.Position
//TempPos:=ScrollBar3.Position;
else
ScrollBar2.Position:=100-ScrollBar1.Position-ScrollBar3.Position;end;procedure TParaChooseForm.ScrollBar2Change(Sender: TObject);
var
TempPos1:Integer;
TempPos2:Integer;
begin
TempPos1:=ScrollBar1.Position;
TempPos2:=ScrollBar2.Position;
if (TempPos1+TempPos2)<=100 then
ScrollBar3.Position:=100-ScrollBar1.Position-ScrollBar2.Position
//TempPos:=ScrollBar3.Position;
else
ScrollBar1.Position:=100-ScrollBar2.Position-ScrollBar3.Position;end;procedure TParaChooseForm.ScrollBar3Change(Sender: TObject);
begin
ScrollBar3.Position:=100-ScrollBar1.Position-ScrollBar2.Position;
end;procedure TParaChooseForm.Timer1Timer(Sender: TObject);
begin Label1.Caption:=IntToStr(ScrollBar1.Position);
Label2.Caption:=IntToStr(ScrollBar2.Position);
Label3.Caption:=IntToStr(ScrollBar3.Position); //Chart1.Series[1].Add(ScrollBar1.Position);
end;procedure TParaChooseForm.FormCreate(Sender: TObject);
begin
//Chart1.Series[1].Add(ScrollBar1.Position);
with Image1 do
begin
//Canvas.Refresh;
Canvas.Brush.Color:=clRed;
Canvas.Brush.Style:=bsSolid;
Canvas.Pie(Image1.Left-1,Image1.Top-1,Image1.Width-1,Image1.Height-1,50,5,300,50);
end;
end;这是我自己的代码。
解决方案 »
- 郁闷完了!Delphi8.0
- 系统在XP SP2下报错,请高手指教!!!
- 关于存储过程的菜鸟问题(刚看的书,别见笑!)
- 使用fastreport如何对报表添加页脚???
- 求救,我在学习李维的《Delphi5.x ADO/MTS/COM+》的第九章的程序实例中,编写的更新组件总是不好用,请各位帮帮忙,谢谢
- 服务端不响应的问题,很棘手
- ★★★XPBarMenu的问题★★★
- 请问如何实现控制RichEdit的打印预览和打印分页控制?
- delphi6保存控件写入dll时出错
- Embarcadero RAD Studio XE3官方正式版ISO镜像开放下载
- 最菜的报表问题???
- 关于oop的类的继承关系,我试着写了Label类的继承LinkabelLabel
theDC,theDC1: HDC;
theBitmap: HBITMAP;
theCanvas: TCanvas;
begin
theCanvas:=TCanvas.Create;
theDC:=GetDC(Panel1.Handle);
theDC1:=CreateCompatibleDC(theDC);
theBitmap:=CreateCompatibleBitmap(theDC1,100,100);
theCanvas.Handle:=theDC1;
SelectObject(theCanvas.Handle,theBitmap);
//然后用theCanvas的画图函数或API图形函数在theCanvas上画扇型图,
//而后用StretchBlt或BitBlt从theCanvas上切一部分图形到Panel1上,
//要改变时图形参数时用FillRect填充整个theCanvas以准备重画,
//一般当要求快速变化图形时这样做。
ReleaseDC(Panel1.Handle,theDC);
DeleteObject(theBitmap);
DeleteDC(theDC1);
end;
theCanvas.Brush.Color:=clRed;
theCanvas.Brush.Style:=bsSolid;
theDC:=GetDC(Panel1.Handle);
theDC1:=CreateCompatibleDC(theDC);
theBitmap:=CreateCompatibleBitmap(theDC1,100,100);
theCanvas.Handle:=theDC1;
SelectObject(theCanvas.Handle,theBitmap);
theCanvas.Pie(Panel1.Left-1,Panel1.Top-1,Panel1.Width-1,Panel1.Height-1,50,5,300,50);
StretchBlt(theDC,0,0,100,100,theDC1,0,0,100,100,SRCAND);
theCanvas.FillRect(ClientRect);
ReleaseDC(Panel1.Handle,theDC);
DeleteObject(theBitmap);
DeleteDC(theDC1);