添加卡片图像C#
本文关键字:图像 添加 | 更新日期: 2023-09-27 18:25:21
我的任务是在C#中为我的最终项目创建BlackJack。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;
}
}
最后,我有一个简单的Windows窗体,它有两个按钮,可以简单地发一张牌,并用一个显示当前发牌字符串的标签打乱牌组:
public partial class Form1 : Form
{
Deck deck = new Deck();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void buttonDeal_Click(object sender, EventArgs e)
{
Card card = deck.DealCard();
labelOutput.Text = card.ToString();
}
private void buttonShuffle_Click(object sender, EventArgs e)
{
deck.Shuffle();
}
}
现在,我只需要一些方法来为我的卡片分配图像,我不确定如何。。如有任何帮助,我们将不胜感激。
编辑:以下是我在卡片课上一直在努力的内容。
public static Image FromFile()
{
fileName = face + "_" + "of" + "_" +suit+".png";
Image image = Image.FromFile(fileName);
return image;
}
我有一个错误,说Resources没有fileName的定义。
我已经将所有图像作为资源添加到项目中,并将所有文件命名为"Eight_of_Clubs"。
编辑:我已经在我的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) 由于它们已经是资源,所以从那里加载它们,而不是从文件加载它们。
请参阅C#中从项目资源区域加载图像