作者james732 (好人超)
看板C_and_CPP
標題Re: [問題] vc++ 繪圖問題
時間Fri Dec 3 23:56:40 2010
兩種解法:
一、例外捕捉法
private:
System::Void Form1_Paint(System::Object^ sender,
System::Windows::Forms::PaintEventArgs^ e)
{
Pen^ myPen=gcnew Pen(Color::Black,0.1f);
try
{
int x = Convert::ToInt32(textBox1->Text);
//這行是要將textbox的內容轉成數字
Point startPt=Point(x,200);
Point endPt=Point(100,200);
e->Graphics->DrawLine(myPen,startPt,endPt);
}
catch (Exception ^e)
{
MessageBox::Show("請在TextBox輸入數值");
}
}
private:
System::Void textBox1_TextChanged(System::Object^ sender,
System::EventArgs^ e)
{
this->Invalidate();
}
二、if判斷法
private:
System::Void Form1_Paint(System::Object^ sender,
System::Windows::Forms::PaintEventArgs^ e)
{
Pen^ myPen=gcnew Pen(Color::Black,0.1f);
if (textBox1->Text != L"")
{
int x = Convert::ToInt32(textBox1->Text);
//這行是要將textbox的內容轉成數字
Point startPt=Point(x,200);
Point endPt=Point(100,200);
e->Graphics->DrawLine(myPen,startPt,endPt);
}
else
{
MessageBox::Show("請在TextBox輸入數值");
}
}
private:
System::Void textBox1_TextChanged(System::Object^ sender,
System::EventArgs^ e)
{
this->Invalidate();
}
其實我不喜歡直接給程式碼,但是大家的推文都講得差不多了...
這隻程式裡面要注意的「點」其實挺多的,譬如:
(1) Form1_Paint 這個函式,在什麼時候會被呼叫?它該做什麼?
(2) 為什麼要有另一個 textBox1_TextChanged 函式?它該做什麼?
(在你的程式裡,它的名稱不一樣,但意義是相同的)
如果你能夠想通這兩個問題,那這個程式應該就可以理解了
另外,更進一步還可以思考,這兩種寫法到底有什麼差異,優劣是什麼?
如果有哪裡看不懂,就把程式碼註解起來跑跑看,觀察會發生什麼事
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
※ 編輯: james732 來自: 140.117.171.46 (12/04 00:00)
推 nonebelieve:非常感謝你!! 12/04 00:07
→ nonebelieve:我會想辦法融會貫通的!! 12/04 00:07
推 nonebelieve:雖然解決了問題 但是和構想的還是有差異 12/04 00:34
→ nonebelieve:原po能不能推薦網站給我呢? 12/04 00:34
→ nonebelieve:視窗程式和原本的c++ 差好多阿.. 12/04 00:35
我也是看了很多資料才稍懂的
而且其實我比較習慣是用C#寫視窗...XDD
只能說多看多學習了,加油囉
(如果板友們知道有什麼聖經可以推薦的,也拜託大家一下)
※ 編輯: james732 來自: 140.117.171.46 (12/04 00:37)
推 nonebelieve:剛剛兩種方法都試過了 也google了一些不懂的地方 12/04 00:47
→ nonebelieve:但舊的問題解決又跑出新的XDD 12/04 00:47
→ james732:看你要不要po板問囉 12/04 16:36