使用BCB的TCanvas物件並使TImage的範圍變大 |
尚未結案
|
StarKang
一般會員 發表:6 回覆:2 積分:1 註冊:2004-11-22 發送簡訊給我 |
請問各位高手, 自己在程式碼內用TImage上的TCanvas自動繪圖, 但是因為自己的自動繪圖 會超過TImage的邊界, 所以會設定TImage的Height或是Width, 但是好像沒 有作用, 請問要如何解決? 之前找了一下討論區, 看到有程式碼可以讀取BitMap的來變動TImage的大 小, 但是自己使用(ex. Image1->Picture->BitMap->Height卻沒有用?) 自己變動TImage的邊界程式碼大致如下 if (y_cur >= Image1->ClientHeight)
{
oldHeight = Image1->Height;
Image1->Height = Image1->Height 40;
Image1->Refresh(); Image1->Canvas->MoveTo(x_ENTPOS[i], oldHeight);
Image1->Canvas->LineTo(x_ENTPOS[i], Image1->Height);
} Image1的屬性 Align = alNone;
AutoSize = true;
Stretch = false; ps:自己嚐試列印出Image1->Height的數值好像如此更動Image1->Height 的數值依然不變? 新手上路, 謝謝高手解惑
|
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言: 請問各位高手, 自己在程式碼內用TImage上的TCanvas自動繪圖, 但是因為自己的自動繪圖 會超過TImage的邊界, 所以會設定TImage的Height或是Width, 但是好像沒 有作用, 請問要如何解決? 之前找了一下討論區, 看到有程式碼可以讀取BitMap的來變動TImage的大 小, 但是自己使用(ex. Image1->Picture->BitMap->Height卻沒有用?) 自己變動TImage的邊界程式碼大致如下 if (y_cur >= Image1->ClientHeight) { oldHeight = Image1->Height; Image1->Height = Image1->Height 40; Image1->Refresh(); Image1->Canvas->MoveTo(x_ENTPOS[i], oldHeight); Image1->Canvas->LineTo(x_ENTPOS[i], Image1->Height); } Image1的屬性 Align = alNone; AutoSize = true; Stretch = false; ps:自己嚐試列印出Image1->Height的數值好像如此更動Image1->Height 的數值依然不變? 新手上路, 謝謝高手解惑因為你把AutoSize 設為TRUE, 所以才法動態更改Image1的大小, 把AutoSize設為 FALSE應該就可以了 |
StarKang
一般會員 發表:6 回覆:2 積分:1 註冊:2004-11-22 發送簡訊給我 |
引言:感謝回覆, AutoSize = false可看到TImage所處的TScrollBox的Scrollbar有變化,但是 可視範圍(使用Canvas元件時底色所呈現的範圍)還是原本初始化的範圍!? 不知道這個現象如何克服? TImage還是ScrollBox需要Refresh? 謝謝 新手上路, 謝謝高手解惑引言: 請問各位高手, 自己在程式碼內用TImage上的TCanvas自動繪圖, 但是因為自己的自動繪圖 會超過TImage的邊界, 所以會設定TImage的Height或是Width, 但是好像沒 有作用, 請問要如何解決? 之前找了一下討論區, 看到有程式碼可以讀取BitMap的來變動TImage的大 小, 但是自己使用(ex. Image1->Picture->BitMap->Height卻沒有用?) 自己變動TImage的邊界程式碼大致如下 if (y_cur >= Image1->ClientHeight) { oldHeight = Image1->Height; Image1->Height = Image1->Height 40; Image1->Refresh(); Image1->Canvas->MoveTo(x_ENTPOS[i], oldHeight); Image1->Canvas->LineTo(x_ENTPOS[i], Image1->Height); } Image1的屬性 Align = alNone; AutoSize = true; Stretch = false; ps:自己嚐試列印出Image1->Height的數值好像如此更動Image1->Height 的數值依然不變? 新手上路, 謝謝高手解惑因為你把AutoSize 設為TRUE, 所以才法動態更改Image1的大小, 把AutoSize設為 FALSE應該就可以了 |
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
放大TImage時除了要設定TImage->Height和TImage->Width外, 還要設定
Image1->Picture->Graphic->Height
Image1->Picture->Graphic->Width
例如:下面這個例子, 當按下Button1時, 會在Image1上畫上底色, 而當按下Button2時會放大Image1, 若在Button2事件中拿掉Image1->Picture->Graphic->Height = 200;和Image1->Picture->Graphic->Width = 200; 就會出現雖然Image1已經放大了, 但是Canvas的底色範圍還是不變, 你可以試試
void __fastcall TForm1::Button1Click(TObject *Sender) { TRect CanvasRect(0, 0, Image1->Width, Image1->Height); // 填上底色 Image1->Canvas->FillRect(CanvasRect); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { // 放大Image1 Image1->Width = 200; Image1->Height = 200; // 放大Image1->Picture Image1->Picture->Graphic->Height = 200; Image1->Picture->Graphic->Width = 200; } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |