C#开发BlackJack游戏如何向List添加项并显示资源文件图片
问题原因
当前实现存在核心错误:你传入的"Resources._2C.png"既不是有效的本地文件路径,也不是嵌入资源的正确访问方式。图片导入项目资源后会被编译为程序集内嵌资源,运行时不会在输出目录生成同名实体文件,直接传路径字符串完全无法被PictureBox识别加载。
修复方案
- 调整Card类定义,不要用字符串存储图片路径,直接用WinForms原生的
Image类型存储卡牌图片对象,省去后续重复加载解析的步骤:
internal class Card { public int Value { get; set; } public string Name { get; set; } public Image CardImage { get; set; } public Card(int value, string name, Image cardImage) { Value = value; Name = name; CardImage = cardImage; } }
- 初始化卡牌实例时,不要手写路径字符串,直接通过Visual Studio自动生成的资源强类型类读取嵌入图片。注意导入资源后VS会自动按文件名生成对应属性,
_2C.png对应的属性名是_2C,不需要带.png后缀:
private void startButton_Click(object sender, EventArgs e) { // 初始化梅花2 myListOfCards.Add(new Card(2, "Two of Clubs", Properties.Resources._2C)); // 剩余51张卡牌按相同规则,匹配对应资源属性添加即可 }
- 需要显示卡牌时,直接把Card实例的
CardImage属性赋值给PictureBox的Image属性即可正常渲染:
// 示例:渲染玩家第一张手牌 playerFirstCardPictureBox.Image = playersHand[0].CardImage;
排查提示:如果写代码时找不到
Properties.Resources,先打开项目下的Resources.resx文件,确认所有卡牌图片都已成功导入、资源生成名称和你写的属性名完全一致,没有拼写错误。.NET 6+版本的资源类命名空间和项目默认命名空间保持一致,注意引用即可。
内容的提问来源于stack exchange,提问作者TommyOnIt
相关产品推荐
相关产品推荐

