2013-05-14 280 views
0

我正在製作一款卡片遊戲,其中創建了10張不同的卡片,我已在右側的資源區域中將圖片添加到程序中。我的卡結構如下:將圖像添加到數組元素

public Form1() 
    { 
     cards = new PlayCard[10]; 
     cards[0] = new PlayCard("Harry", 97, 33, 40); 
     cards[1] = new PlayCard("Dave", 80, 91, 41); 
     cards[2] = new PlayCard("Randle", 90, 13, 45); 
     cards[3] = new PlayCard("Zach", 30, 98, 81); 
     cards[4] = new PlayCard("Shorty", 30, 89, 99); 
     cards[5] = new PlayCard("Matt", 75, 81, 72); 
     cards[6] = new PlayCard("Aaron", 89, 82, 80); 
     cards[7] = new PlayCard("Ryan", 25, 83, 71); 
     cards[8] = new PlayCard("Stephen", 96, 100, 100); 
     cards[9] = new PlayCard("David", 90, 37, 70); 

     InitializeComponent(); 
    } 

我不知道我是如何得到相應的圖片顯示了決心上卡顯示

感謝

+0

我想你將不得不提供你使用哪個UI的更多細節(WinForms,WPF,Win8,HTML)。這將影響您存儲圖像參考的方式。 – 2013-05-14 08:45:48

+0

確實。您將不得不以某種方式加載紋理,然後將各個卡片引用給這些紋理。 – 2013-05-14 08:46:30

回答

2

使用ImageList。然後,您可以命名每個圖像以符合您的名字。 ImageLists有一個很好的介紹,以及如何在運行時和設計時添加圖像here

首先添加圖像(在運行時顯示):

imageList1.Images.Add("pic1", Image.FromFile("c:\\mypic.jpg")); 

從集合中刪除圖像:

imageList1.Images.RemoveAt(listBox1.SelectedIndex); 
imageList1.Images..RemoveByKey("pic1"); 

要訪問圖像,從圖像採集得到的圖像:

panel1.BackgroundImage = imageList1.Images["David"]; 

或適合您的陣列:

panel1.BackgroundImage = imageList1.Images[cards[i][0]]; 

我希望這有助於。


編輯。以解決上述不是面向對象的評論。代替使用ImageList,您可以將Image添加到PlayCard對象。還有一個選項可以使用Dictionary<string, Image>來處理這個映射,但是這也可以被解釋爲非OOP。

+0

它可以工作,但它確實不是面向對象的,它會無故加重資源管理的負擔 - 您必須在兩個集合中鏡像添加/刪除過程。 另外,如果他想重命名一張卡片,則必須去改變卡片的名稱。 – 2013-05-14 08:52:31

0

將圖像作爲屬性添加到您的PlayCard類中,然後爲每個Playcard分配一個圖像(最簡單的方法 - 更改您的構造函數)。每個Playcard都會知道它的圖像,所以很容易在現有的代碼中實現它,而無需太多修改。