Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не перерисовывается график! в Bitmap


txt ©   (2004-01-09 17:10:00) 

Задача такая, я рисую график, он должен сохраняться  в файл, всё вроде нормально, но когда я хочу другой график
нарисовать, у меня фон не отчищается от первого и получается что один наслаивается на 2-й т.д.! как очищать перед перерисовкой? Или может у меня битмап не разруш-ся при выходе?
Зарание благодарен! Ниже приведён код проги
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs,unit1, StdCtrls, formula;

type
 TForm2 = class(TForm)
   procedure FormPaint(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);

   procedure Button1Click(Sender: TObject);
 private
      Bitmap:TBitmap;
       { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;
s,s2:string;
w,h,i,ok:integer;
y1:extended;
x:real;
implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);

begin
Bitmap:=TBitmap.Create;

end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
 Bitmap.Free;
 bitmap:=nil ;
end;

procedure TForm2.FormPaint(Sender: TObject);
function c(im:real):integer;
begin
result:= round(canvas.TextWidth(floattostr((im)/ok))/2) ;
end;

begin
ok:=form1.spinedit1.Value;
canvas.Pen.Color:=$00575757;
canvas.Font.Name:='Times New Roman';
canvas.Font.Color:=clblue;
Bitmap.canvas.Font.Size:=7;
Bitmap.canvas.Pen.Width:=1;

w:=round(clientWidth/2);
h:=round(clientHeight/2);

Bitmap.canvas.MoveTo(0,h); Bitmap.canvas.LineTo(clientwidth,h);
Bitmap.canvas.MoveTo(w,0); Bitmap.canvas.LineTo(w,clientheight);

Bitmap.Width:=2*w;
Bitmap.Height:=2*h;
Canvas.CopyRect(Rect(0, 0, 2*w, 2*h), BitMap.Canvas, Rect(0, 0,2*w, 2*h));
Bitmap.SaveToFile('c:\123.bmp');
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
if (form1.edit1.Text='') then exit;
w:=round(clientWidth/2);h:=round(clientHeight/2);
Bitmap.canvas.Pen.Width:=3;
 x:=-30;
s:=form1.edit1.Text;
if (form1.panel1.Visible)and(form1.Edit2.text<>'') then
s2:=form1.edit2.Text else s2:=s;
Preparation(s,['x']);
Preparation(s2,['x']);
while x<= 30 do begin
application.ProcessMessages;
x:=x+0.001;
if x<=form1.SpinEdit2.Value then
Recogn(ChangeVar(s,'x',x),y1) else
Recogn(ChangeVar(s2,'x',x),y1);

Bitmap.canvas.pixels[round(x*ok)+w,h-round(y1*ok)]:=clred;
   end;
   repaint;
end;
end.


марсианин   (2004-01-10 00:31:00) [1]

тебе вообще-то виднее в какую строчку вписывать.. перед началом рисования в битмапе

как функцию использовать - смотри хелп, там и пример есть...


txt   (2004-01-09 22:10:00) [2]

непонян в какой строчке и что конкретно прописать?


марсианин   (2004-01-09 21:42:00) [3]

в чем проблема? надо чтоб очищался фон -- очищай! например Canvas.FillRect'ом закрась все..


Наверх

Титульная страница Поиск, карта сайта Написать письмо