使用图像列表

时间:2016-12-11 05:19:14

标签: c# image for-loop windows-applications imagelist

我一直致力于为Windows应用程序创建一副牌的项目。到目前为止,我能够创建一个可容纳所有52张牌的列表。除此之外,图像列表用于存储每张卡的图像。我试图解决的问题是我需要存储与存储在列表中的每个元素相对应的每张卡片的图像。 到目前为止,结果显示如下:
2个俱乐部, 俱乐部3, 4个俱乐部, 5个俱乐部, 。 。 。 杰克俱乐部, 俱乐部女王, 俱乐部之王, 俱乐部王牌

以下是我的工作代码:

            for (i = 0; i < 4; i++)
            {
                suit = i.ToString();

                switch (suit)
                {
                    case "0":
                        suit = "Clubs";
                        break;

                    case "1":
                        suit = "Diamonds";
                        break;

                    case "2":
                        suit = "Hearts";
                        break;

                    case "3":
                        suit = "Spades";
                        break;
                }

                for (k = 0; k < 13; k++)
                {
                    // face = k.ToString();
                    face = k.ToString();

                    switch (face)
                    {
                        case "0":
                            face = "2";
                            break;

                        case "1":
                            face = "3";
                            break;

                        case "2":
                            face = "4";
                            break;

                        case "3":
                            face = "5";
                            break;

                        case "4":
                            face = "6";
                            break;

                        case "5":
                            face = "7";
                            break;

                        case "6":
                            face = "8";
                            break;

                        case "7":
                            face = "9";
                            break;

                        case "8":
                            face = "10";
                            break;

                        case "9":
                            face = "Jack";
                            break;

                        case "10":
                            face = "Queen";
                            break;

                        case "11":
                            face = "King";
                            break;

                        case "12":
                            face = "Ace";
                            break;


                    }

                    cardDeckList.Add(new PlayingCard(suit, face, imageListCards.Images[counter], 1));
                    counter++;
                }




            }

            for (int l = 0; l < cardDeckList.Count; l++)
            {
                listBoxOutput.Items.Add(cardDeckList[l].ToString());

                pictureBox_Card1.Image = cardDeckList[l].CardImage;
            }

我的目标是在图像列表中以特定顺序设置和上传图像。因此,我想将每个新创建的元素的值(例如套装,面值和图像)相应地存储到图像列表的图像列表中。

截至目前,其中包含图像如何存储的图像,如图像列表中所示。此外,其中包含我当前正在运行的Windows应用程序。

Windows app
ImageList Elements
ImageList Elements no.2

1 个答案:

答案 0 :(得分:0)

您不要说这是一个网站或Windows应用程序。 我认为你有一个Web应用程序

这是一个示例网页,我希望帮助您创建自己的

网络 C#(代码背后)

public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void btnload_Click(object sender, EventArgs e)
    {
        string[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
        string face = "";
        int counter = 0;
        List<PlayingCard> cardDeckList = new List<PlayingCard>();
        for (int i = 0; i < 4; i++)
        {
            for (int k = 0; k < 13; k++)
            {
                if (k < 9)
                    face = k.ToString();
                else
                {
                    switch (k)
                    {
                        case 9:
                            face = "Jack";
                            break;

                        case 10:
                            face = "Queen";
                            break;

                        case 11:
                            face = "King";
                            break;

                        case 12:
                            face = "Ace";
                            break;
                    }
                }
                cardDeckList.Add(new PlayingCard(suit[i], face, counter));
                counter++;
            }
        }
        gvCards.DataSource = cardDeckList.ToList().OrderBy(c => c.order);
        gvCards.DataBind();
    }
}
public class PlayingCard
{
    public string suit { get; set; }
    public string face { get; set; }
    public string ImageUrl { get; set; }

    public int order { get; set; }
    public PlayingCard(string _suit, string _face, int _order)
    {
        suit = _suit;
        face = _face;
        //ImageUrl = "Url Of Images in virtual directory" 
        ImageUrl = "~/Images/" + face + "-of-" + suit;
        order = _order;
    }

}

网络 标记

<form id="form1" runat="server">
    <div> 
        <asp:Button ID="btnload" runat="server" Text="Load" OnClick="btnload_Click"  />

        <asp:GridView ID="gvCards" runat="server" AutoGenerateColumns="false"  >
            <Columns >
                <asp:BoundField DataField="suit" HeaderText="suit" />
                <asp:BoundField DataField="face" HeaderText="face" />
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Image ID="imgFace" runat="server" ImageUrl='<%#  Bind("ImageUrl") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
</form>

Windows应用 PlayingCard Class

  public class PlayingCard
    {
        public string suit { get; set; }
        public string face { get; set; }
        public string ImageUrl { get; set; }
        public Image pic { get; set; }
        public int order { get; set; }
        public PlayingCard(string _suit, string _face, int _order)
        {
            suit = _suit;
            face = _face;
            ImageUrl = "\\Images\\" + face + "-of-" + suit + ".png";
            order = _order;


            string _ImageUrl = Application.StartupPath + ImageUrl;
            pic = Image.FromFile(_ImageUrl);

        }

    }

Windows应用 按钮单击

  private void btnLoad_Click(object sender, EventArgs e)
    {
        string[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
        string face = "";
        int counter = 0;
        List<PlayingCard> cardDeckList = new List<PlayingCard>();
        for (int i = 0; i < 4; i++)
        {
            for (int k = 0; k < 13; k++)
            {
                if (k < 9)
                    face = (k + 1).ToString();
                else
                {
                    switch (k)
                    {
                        case 9:
                            face = "Jack";
                            break;

                        case 10:
                            face = "Queen";
                            break;

                        case 11:
                            face = "King";
                            break;

                        case 12:
                            face = "Ace";
                            break;
                    }
                }
                cardDeckList.Add(new PlayingCard(suit[i], face, counter));
                counter++;
            }
        }
        //bindGv is a bindingSource
        //in bindGv->properties->datasource  "add project datasource"
        //in "choose a datasource type" window select "Object" Next
        //in "select the datasource object" window find the "PlayingCard" class then finish
        //in gridView datasource select bindGv
        bindGv.DataSource = cardDeckList.ToList().OrderBy(c => c.order);
    }

Windows应用程序
设计师 your designer like this

Windows应用程序
产量 output