Привет. Как происходит закрашивание в графика?
Код:
var
Form1: TForm1;
valueMin: real=0;
valueMax: real=1;
valueN: integer=10;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var b: TBitmap;
begin
init_calc_functions;
init_draw_functions;
b:=TBitmap.Create;
b.LoadFromResourceName(hInstance, 'INTEGRAL');
b.Transparent:=true;
b.TransparentColor:=clWhite;
FunctionFormula.Width:=b.Width;
FunctionFormula.Height:=b.Height;
FunctionFormula.Canvas.Brush.Color:=$00BAEDEF;
FunctionFormula.Canvas.FillRect(Rect(0, 0, b.Width, b.Height));
FunctionFormula.Canvas.StretchDraw(Rect(0, 0, b.Width-1, b.Height-1), b);
b.Free;
Panel1.Left:=FunctionFormula.Left+FunctionFormula.Width;
Panel1.Height:=FunctionFormula.Height;
Panel1.Top:=FunctionFormula.Top;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if ((Edit1.Text='') or (Edit1.Text='') or (Edit1.Text='')) then
begin
MessageDlg('Ââåäèòå ÂÑÅ òðåáóåìûå çíà÷åíèÿ!', mtWarning, [mbOK], 0);
end;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.SomeEditKeyPress(Sender: TObject; var Key: Char);
var i: integer;
s: string;
begin
// Application.MessageBox('Press', '');
if (((Key>='0') and (Key<='9')) or (ord(Key)=VK_BACK) or ((Key=',') and (Sender<>Edit3))) then
begin
if Key=',' then
begin
s:=(Sender as TEdit).Text;
for i:=1 to length(s) do
if (s[i]=',') then
begin
Application.MessageBox(PChar(inttostr(i)), '');
Key:=chr(0);
break;
end;
end;
end
else
Key:=chr(0);
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.SomeEditChange(Sender: TObject);
var r: real;
begin
// Application.MessageBox('Change', '');
if Sender=Edit3 then
begin
if ((Sender as TEdit).Text<>'') then
valueN:=StrToInt((Sender as TEdit).Text);
end
else if ((Sender=Edit1) or (Sender=Edit2)) then
begin
if (Sender as TEdit).Text<>'' then
begin
try
r:=StrToFloat((Sender as TEdit).Text);
except
on EConvertError do begin
if Sender=Edit1 then
(Sender as TEdit).Text:=FloatToStr(valueMin)
else if Sender=Edit2 then
(Sender as TEdit).Text:=FloatToStr(valueMax);
exit;
end;
end;
if Sender=Edit2 then
begin
valueMax:=r;
FunctionFormula.Canvas.TextRect(Rect(0, 0, 155, 18), 87-FunctionFormula.Canvas.TextWidth((Sender as TEdit).Text) div 2, 2, (Sender as TEdit).Text)
end
else
begin
valueMin:=r;
FunctionFormula.Canvas.TextRect(Rect(0, 58, 155, 74), 87-FunctionFormula.Canvas.TextWidth((Sender as TEdit).Text) div 2, 60, (Sender as TEdit).Text);
end;
end
else
begin
FunctionFormula.Canvas.Font.Size:=10;
if Sender=Edit2 then
FunctionFormula.Canvas.TextRect(Rect(0, 0, 155, 18), 87-FunctionFormula.Canvas.TextWidth('') div 2, 2, '')
else
FunctionFormula.Canvas.TextRect(Rect(0, 58, 155, 74), 87-FunctionFormula.Canvas.TextWidth('') div 2, 60, '');
end;
end;
if ((Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') and (valueMax>valueMin) and (valueN>0)) then
begin
drawArray[MethodSelector.ItemIndex+1](DisplayChart, valueMin, valueMax, valueN);
end
else
begin
SeriesFunction.Clear;
DisplayChart.LeftAxis.Maximum:=0;
SeriesPatterned.Clear;
end;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
var s: string;
label
calc;
begin
calc:
if ((Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') and (valueMax>valueMin) and (valueN>0)) then
begin
//Calculate our function
Edit4.Text:=FloatToStr(calcArray[MethodSelector.ItemIndex+1](valueMin, valueMax, valueN));
end
else if ((Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') and (valueMax<valueMin) and (valueN>0)) then
begin
if MessageDlg('Âåðõíÿÿ ãðàíèöå ìåíüøå íèæíåé!'#13#10'Ïîìåíÿòü èõ ìåñòàìè?', mtInformation, [mbYes, mbNo], 0)=mrYes then
begin
s:=Edit2.Text;
Edit2.Text:=Edit1.Text;
Edit1.Text:=s;
goto calc;
end;
end
else if ((Edit1.Text<>'') or (Edit2.Text<>'') or (Edit3.Text<>'')) then
MessageDlg('Çàïîëíèòå ÂÑÅ ïîëÿ!', mtInformation, [mbOK], 0)
else
MessageDlg('Îøèáêà â äàííûõ!', mtError, [mbOK], 0);
end;
procedure TForm1.MethodSelectorClick(Sender: TObject);
begin
drawArray[MethodSelector.ItemIndex+1](DisplayChart, valueMin, valueMax, valueN);
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
SeriesPatterned.AreaLinesPen.Visible:=(Sender as TCheckBox).Checked;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
SomeEditChange(Edit1);
SomeEditChange(Edit2);
end;