如何清除timage
畫布以避免更改輸入大小時出現重複圖像?爲什麼nil命令不起作用? 這是我的代碼在delphi 7中清除timage.canvas
begin
image1.Canvas := nil;
image1.Canvas.Pen.Color := clRed;
image1.Canvas.Brush.Color := clBlue;
image1.canvas.rectangle(10,10,vwpj,vwlb);
end;
如何清除timage
畫布以避免更改輸入大小時出現重複圖像?爲什麼nil命令不起作用? 這是我的代碼在delphi 7中清除timage.canvas
begin
image1.Canvas := nil;
image1.Canvas.Pen.Color := clRed;
image1.Canvas.Brush.Color := clBlue;
image1.canvas.rectangle(10,10,vwpj,vwlb);
end;
不能分配Nil
或Canvas
任何值,Canvas
是隻讀屬性,所以你需要刪除的第一行,然後繪製在畫布TImage
:
Image1.Canvas.Pen.Color := clRed;
Image1.Canvas.Brush.Color := clBlue;
Image1.canvas.rectangle(0,0,Image1.Height,Image1.Width);
編輯: 你必須設置圖像默認每次它的畫布上繪製的時間:
步驟:
Procedure TForm1.Default(Image: TImage);
begin
Image.Canvas.Pen.Color := clBtnFace;
Image.Canvas.Brush.Color := clBtnFace;
Image.Canvas.FillRect(Rect(0,0,Image.Height,Image.Width));
end;
然後稱其爲:
procedure TForm1.Button1Click(Sender: TObject);
begin
Default(Image1);
Image1.Canvas.Pen.Color := clRed;
Image1.Canvas.Brush.Color := clBlue;
Image1.canvas.rectangle(0,0,Image1.Height,Image1.Width);
end;
從你所寫的內容,並試圖在許多先前所做的變更來解釋。 這是解決您的問題的可能方案。
要求:
TEdit
組件到您的表單。TButton
。TImage
。代碼:
var
Xorigin,Yorigin,vwpj,vwlb:integer;
....
begin
vwpj := strtoint(vwpjEdit.text);
vwlb := strtoint(vwlbEdit.text);
Xorigin := strtoint(XoriginEdit.Text);
Yorigin := strtoint(YoriginEdit.Text);
// You have to wipe the canvas with a base color,
image1.Canvas.Brush.Color := clwhite;
image1.Canvas.FillRect(rect(0,0,image1.Width,image1.height));
image1.Canvas.Pen.Color := clRed;
image1.Canvas.Brush.Color := clBlue;
image1.Canvas.rectangle(Xorigin,Yorigin,vwlb,vwpj);
end;
說明:我明白,你想畫上TImage
的Canvas
財產的矩形。隨着每次調整矩形的大小,你想清除Canvas
(你暗示這是通過將nil
分配給畫布,因爲Canvas
是一個只讀屬性是錯誤的)。
現在上面的代碼通過使用Fillrect()
方法填充畫布的基色(我選擇了clwhite
)來完成此操作。
由此您需要明白,不存在清除圖像,或者刪除它(使用free
命令如您所說)並且它將消失,如果您想再次繪製它,您將需要創建它。 第二個選擇是你用背景色填充它(我選擇的基地clwhite
)或作爲第三個選項,調整圖像的大小。
所有主要的事情是,只要該圖像仍然存在,畫布上的內容仍然存在。代碼
上述結果
@kobik我的一位老師在我小時候說過 - 有時候你會認爲你是對的,但是隻有當有人比你更有經驗的時候,你才知道。我認爲更有經驗的人是你在這種情況下。我將刪除該部分 –
圖像總是包含的東西。如果你想填充背景顏色。這樣做。不要將您的整個代碼轉儲給我們。正是我們需要看到的。 –
當大小改變時,會在畫布上的舊矩形後面製作新的矩形。請問,我必須寫出正確的代碼? – rendra
@nas他並沒有改變任何東西的大小。他正在特定座標處繪製一個矩形。 –