Re: [問題] vc++ 繪圖問題
兩種解法:
一、例外捕捉法
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)
推
12/04 00:07, , 1F
12/04 00:07, 1F
→
12/04 00:07, , 2F
12/04 00:07, 2F
推
12/04 00:34, , 3F
12/04 00:34, 3F
→
12/04 00:34, , 4F
12/04 00:34, 4F
→
12/04 00:35, , 5F
12/04 00:35, 5F
我也是看了很多資料才稍懂的
而且其實我比較習慣是用C#寫視窗...XDD
只能說多看多學習了,加油囉
(如果板友們知道有什麼聖經可以推薦的,也拜託大家一下)
※ 編輯: james732 來自: 140.117.171.46 (12/04 00:37)
推
12/04 00:47, , 6F
12/04 00:47, 6F
→
12/04 00:47, , 7F
12/04 00:47, 7F
→
12/04 16:36, , 8F
12/04 16:36, 8F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
4
11
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章