Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

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

 
txt ©   (2004-01-09 17:10) [0]

Задача такая, я рисую график, он должен сохраняться  в файл, всё вроде нормально, но когда я хочу другой график
нарисовать, у меня фон не отчищается от первого и получается что один наслаивается на 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-09 21:42) [1]

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


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

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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.06 c
14-1078046402
vidiv
2004-02-29 12:20
2004.03.28
Еще один маленький эффектик!


14-1078412833
able
2004-03-04 18:07
2004.03.28
Программка для проверки памяти


3-1077182213
NorthMan1
2004-02-19 12:16
2004.03.28
Кто занимался переносом из FOX а в ORACLE - отзовитесь


1-1078865639
SeriousSam
2004-03-09 23:53
2004.03.28
Как сделать что бы в StringGrid e по команде выделялся...


3-1074853610
b0bi
2004-01-23 13:26
2004.03.28
что лучше юзать char или varchar?