[問題] 關於繼承(window form)

看板C_Sharp作者 (慢慢來NN)時間15年前 (2011/01/27 14:05), 編輯推噓0(0022)
留言22則, 3人參與, 最新討論串1/1
我在主程式建立了一個panel的...如下 public partial class Form1 : Form { ..... Graphics Original = panel_original.CreateGraphics(); ..... } 然後副程式如下 public class All_paint : Form1 { public void orig_paint(ArrayList ori) { Original.clear(color.white); } } 這樣就不行了= = 不知道我有漏掉甚麼東西嗎?(._.?) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.126.10.243

01/27 14:10, , 1F
你怎麼樣用它?怎麼樣沒辦法?
01/27 14:10, 1F
以回復 我是新手 抱歉= = ※ 編輯: ahjay 來自: 120.126.10.243 (01/27 14:16)

01/27 17:17, , 2F
繼承的關係可以看成主、副程式?另外錯誤訊息是?也沒看到怎
01/27 17:17, 2F

01/27 17:18, , 3F
麼使用Form1和All_paint這兩個類別啊...
01/27 17:18, 3F
這是gui的程式 然後我在Form1[設計]的介面拉了一個panel 然後我想在別的class使用這一個panel 不知道要怎麼用? ※ 編輯: ahjay 來自: 120.126.10.246 (01/27 19:26)

01/27 23:28, , 4F
那是怎麼用All_paint類別?在哪裡用?
01/27 23:28, 4F

01/27 23:30, , 5F
另外繼承不是拿來傳遞實值東西的~而是像遺傳一樣~父親身體
01/27 23:30, 5F

01/27 23:30, , 6F
有的~兒子也有~但不代表父親吃飽了~兒子也會跟著飽...
01/27 23:30, 6F

01/28 00:13, , 7F
我All_paint是要用來畫圖 畫線或是圖刑之類的
01/28 00:13, 7F

01/28 00:14, , 8F
所以說 我想要繼承panel是沒辦法的嗎?
01/28 00:14, 8F

01/28 00:18, , 9F
最簡單的方法~可以把Original弄成static或在方法傳遞~但我
01/28 00:18, 9F

01/28 00:19, , 10F
還是覺得您應該把實作的部份程式貼上來~才能知道真正問題
01/28 00:19, 10F

01/28 00:28, , 11F
01/28 00:28, 11F
主程式 if (s.Count == ori_scale)//如果達到了1024的倍數點就進入畫圖 { Original.Clear(Color.White); ori_xscale /= Convert.ToInt16(comboBox1.Text); all_paint.orig_paint(s, pf_ori, ori_scale, ori_xscale); s.Clear(); Original.DrawLines(drawpen, pf_ori);<----可以在副程式直接跑 ori_xscale = 0.503f; } 呼叫的副程式 public void orig_paint(ArrayList ori, PointF[] pf, int scale, float x_scale) { Point ori_center = new Point(0, 125); int x = 0; float y_Scale = 60f; for (int n = 0; n < scale; n++) { pf[n].X = ori_center.X + x_scale * x; pf[n].Y = ori_center.Y - ((float)Convert.ToInt16(ori[n]) - 2048) / y_Scale; x++; } x = 0; } 現在是希望能夠把程式碼都丟到副程式那邊執行 不知道這樣看不看得懂@_@? 如果還不清楚可以在推文 我會盡快回復 謝謝你 ※ 編輯: ahjay 來自: 120.126.10.246 (01/28 00:35)

01/28 00:45, , 12F
上面這段是寫在All_paint類別裡面的吧?問題點應該在Form1
01/28 00:45, 12F

01/28 00:47, , 13F
裡面~程式開始執行是先開啟了Form1吧?還是All_paint?
01/28 00:47, 13F

01/28 00:50, , 14F
Form1
01/28 00:50, 14F
public partial class Form1 : Form { private void timer1_Tick(object sender, EventArgs e) { ArrayList s=new ArrayList(); s.Add(y);---->y是連續傳的值(我用藍芽) if (s.Count == ori_scale)//如果達到了1024的倍數點就進入畫圖 { Original.Clear(Color.White); ori_xscale /= Convert.ToInt16(comboBox1.Text); all_paint.orig_paint(s, pf_ori, ori_scale, ori_xscale); s.Clear(); Original.DrawLines(drawpen, pf_ori); ori_xscale = 0.503f; } 然後就是上面那段副程式 ※ 編輯: ahjay 來自: 120.126.10.246 (01/28 00:53)

01/28 01:01, , 15F
@@那為什麼不要把Original直接從orig_paint方法傳進去呢?
01/28 01:01, 15F

01/28 01:01, , 16F
另外您一直說主副程式~那...All_Paint有new過了嗎?錯誤訊
01/28 01:01, 16F

01/28 01:01, , 17F
息是什麼?
01/28 01:01, 17F

01/28 01:04, , 18F
請問一下 要怎麼直接把Original從orig_paint傳過去?因為這
01/28 01:04, 18F

01/28 01:04, , 19F
邊其實不是很懂 現在還是新手階段Q_Q
01/28 01:04, 19F
all_paint.orig_paint(s, pf_ori, ori_scale, ori_xscale,Original); ^^^^^^^^^^是這樣嗎? 如果是的話 那 public void orig_paint(ArrayList ori, PointF[] pf, int scale, float x_scale,______________)這邊應該寫甚麼阿 是Graphics嗎? ※ 編輯: ahjay 來自: 120.126.10.246 (01/28 01:08)

01/28 01:14, , 20F
Graphics Original → 型態和變數名...
01/28 01:14, 20F

01/28 01:15, , 21F
我建議您應該要從頭開始學~這樣跳太快了~外人很難幫...
01/28 01:15, 21F

01/28 01:16, , 22F
好 謝謝你Q_Q
01/28 01:16, 22F
文章代碼(AID): #1DGGiN7c (C_Sharp)