C# 添加卡片图像C

C# 添加卡片图像C,c#,image,playing-cards,C#,Image,Playing Cards,我的任务是为我的最后一个项目用C语言创建21点。C对我来说相当陌生,所以我在为我的卡分配图像时遇到了麻烦。现在我有一门卡片课: public class Card { private string face; private string suit; public Card(string cardFace, string cardSuit) { face = cardFace; suit = cardSuit; }

我的任务是为我的最后一个项目用C语言创建21点。C对我来说相当陌生,所以我在为我的卡分配图像时遇到了麻烦。现在我有一门卡片课:

public class Card
{
    private string face;
    private string suit;

    public Card(string cardFace, string cardSuit)
    {
        face = cardFace;
        suit = cardSuit;
    }

    public override string ToString()
    {
        return face + " of " + suit;
    }
}
我有甲板课:

public class Deck
{
    private Card[] deck;
    private int currentCard;
    private const int NUMBER_OF_CARDS = 52;
    private Random ranNum;

    public Deck()
    {
        string[] faces = { "Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
        string[] suits = { "Hearts", "Clubs", "Diamonds", "Spades" };         

        deck = new Card[NUMBER_OF_CARDS];
        currentCard = 0;
        ranNum = new Random();
        for (int count = 0; count < deck.Length; count++)
            deck[count] = new Card(faces[count % 13], suits[count / 13]);
    }

    public void Shuffle()
    {
        currentCard = 0;
        for (int first = 0; first < deck.Length; first++)
        {
            int second = ranNum.Next(NUMBER_OF_CARDS);
            Card temp = deck[first];
            deck[first] = deck[second];
            deck[second] = temp;
        }
    }

    public Card DealCard()
    {
        if (currentCard < deck.Length)
            return deck[currentCard++];
        else
            return null;
    }
}
现在,我只需要一些方法来为我的卡分配图像,我不知道如何。。任何帮助都将不胜感激

编辑:以下是我在卡片课上一直在尝试的内容

   public static Image FromFile()
    {

        fileName = face + "_" + "of" + "_" +suit+".png";
        Image image = Image.FromFile(fileName);
        return image;
    }
我有一个错误,说资源没有文件名的定义

我已经将所有图片作为资源添加到该项目中,并将所有文件命名为“八大俱乐部”

编辑:我在Windows窗体中更改了此选项:

 private void buttonDeal_Click(object sender, EventArgs e)
    {
        Card card = deck.DealCard();
        string fileName = card.getFace() + "_" + "of" + "_" + card.getSuit() + ".png";

        Image image = Image.FromFile(fileName);
        pictureBox1.Image = image;
        labelOutput.Text = card.ToString();
    }
但当我运行程序并单击“交易”按钮时,我得到了错误:


这是错误的,因为加载了一个名为King_of_Spades.png的文件,其中包含此项目的资源。当您将图像添加到程序集的资源时,它在磁盘上不作为文件存在。相反,它作为生成的二进制文件上的数据存在。因此,如果您不是使用二进制文件部署文件,而是将它们作为资源添加,那么它们将不会作为文件存在于部署环境中,因此Image.FromFile将不起作用

您可以通过两种方式解决此问题:1部署文件,将IDE中文件的属性设置为始终复制。因此,在生成二进制文件时,它们将被复制到目标文件夹。2因为它们已经是资源,所以从那里加载它们,而不是从文件加载它们


参见

这里有一个叫做Image的类。你在谷歌上搜索过windows窗体图片或类似的东西吗?数以百万计的结果。。。为什么要问呢?因为我需要根据所画的卡片生成一张图像。是的,我知道如何手动将图像添加到图片框中,但这没有帮助。当你说“生成”时,你真的想自己生成图像,还是想从文件中提取图像?这正是我要推荐的。然后可以使用Image.FromFile来提取图像。我一直在尝试,但遇到了一些问题。我会编辑一下,告诉你我在哪里。
 private void buttonDeal_Click(object sender, EventArgs e)
    {
        Card card = deck.DealCard();
        string fileName = card.getFace() + "_" + "of" + "_" + card.getSuit() + ".png";

        Image image = Image.FromFile(fileName);
        pictureBox1.Image = image;
        labelOutput.Text = card.ToString();
    }