Форум: "WinAPI";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизНе перерисовывается график! в 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.032 c