问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C# winform 做一个点灯游戏,按钮上有一个图片,如何设置点击按钮就变为另一张图片,再点又变回来,代码

发布网友 发布时间:2022-05-03 10:34

我来回答

3个回答

热心网友 时间:2023-10-21 00:48

1 将两个图像加入到项目资源中

2 设置一个bool 值开关

3 点击按钮时切换开关,然后根据开关为按钮设置不同的图像资源文件

 

代码如下所示:


追问太感谢你了,不过还是有点小问题,因为我这个是点灯游戏,有许多个按钮,为什么有的需要点两次才会变过来呢?另外,image是不是无法设置图片随着按钮自动调整大小,从而将它全部显示,我的图片只能显示部分

追答

两次点击才切换的话,是不是因为你有多个按钮,但是你只用了一个bool的切换开关。这个必须一个按钮一个开关的。当然你可以将bool 调到按钮的tag中,你可以看我后面的示例代码


如果需要图像随按钮调整的话,那需要将图像设置为按钮的BackgroundImage,并设置按钮的BackgroundImageLayout为ImageLayout.Stretch,你可以看我后面的示例代码。


热心网友 时间:2023-10-21 00:48

能用到的代码楼上都给了,思路可以更简单一些。

首先,你一定已经有了2副图片了吧?假设一个叫pic1,一个叫pic2
其次,设置一个类变量showPic1=true;

每次点击按钮时,在click事件里:
showPic1=!showPic1;//切换状态
//设置按钮图片
if(showPic1)
{
.....
}else{
......
}

热心网友 时间:2023-10-21 00:49

把图片转换为BYTE数组保存到按钮的TAG中去,点击的时候把当前的按钮图片保存到1个BYTE数组变量 我命名为PicA,再按钮TAG中保存的图片取去设置为当前的按钮图片,然后把PicA保存到按钮的TAG属性中,这样就可以实现了.
方法有很多,我这个只是很普通的1种追问听着好像很复杂啊,我不知道怎么把图片转换为数组,可以给具体代码吗?这部分的就好

追答长度有*,我吧图片转换函数发你百度HI里面吧
private void button1_Click(object sender, EventArgs e)
{
Image a = this.button1.Image;
this.button1.Image = this.button1.Tag as Image;
this.button1.Tag = a;
}

private void Form1_Load(object sender, EventArgs e)
{
//给按钮设置背景图片
string ImagePath = @"G:\Users\Administrator\Pictures\未命名.jpg";
string ImagePath2 = @"G:\Users\Administrator\Pictures\未命名2.jpg";
//吧指定路径的图片转为数组
byte[] PicA= imageToByteArray(ImagePath);
//吧数组转换为IMAGE对象
Image a = byteArrayToImage(PicA);
this.button1.Image=a;
//吧指定路径的图片转为数组
byte[] PicB = imageToByteArray(ImagePath2);
//吧数组转换为IMAGE对象
Image b = byteArrayToImage(PicB);
this.button1.Tag = b;
}
}
}

热心网友 时间:2023-10-21 00:48

1 将两个图像加入到项目资源中

2 设置一个bool 值开关

3 点击按钮时切换开关,然后根据开关为按钮设置不同的图像资源文件

 

代码如下所示:


追问太感谢你了,不过还是有点小问题,因为我这个是点灯游戏,有许多个按钮,为什么有的需要点两次才会变过来呢?另外,image是不是无法设置图片随着按钮自动调整大小,从而将它全部显示,我的图片只能显示部分

追答

两次点击才切换的话,是不是因为你有多个按钮,但是你只用了一个bool的切换开关。这个必须一个按钮一个开关的。当然你可以将bool 调到按钮的tag中,你可以看我后面的示例代码


如果需要图像随按钮调整的话,那需要将图像设置为按钮的BackgroundImage,并设置按钮的BackgroundImageLayout为ImageLayout.Stretch,你可以看我后面的示例代码。


热心网友 时间:2023-10-21 00:48

能用到的代码楼上都给了,思路可以更简单一些。

首先,你一定已经有了2副图片了吧?假设一个叫pic1,一个叫pic2
其次,设置一个类变量showPic1=true;

每次点击按钮时,在click事件里:
showPic1=!showPic1;//切换状态
//设置按钮图片
if(showPic1)
{
.....
}else{
......
}

热心网友 时间:2023-10-21 00:49

把图片转换为BYTE数组保存到按钮的TAG中去,点击的时候把当前的按钮图片保存到1个BYTE数组变量 我命名为PicA,再按钮TAG中保存的图片取去设置为当前的按钮图片,然后把PicA保存到按钮的TAG属性中,这样就可以实现了.
方法有很多,我这个只是很普通的1种追问听着好像很复杂啊,我不知道怎么把图片转换为数组,可以给具体代码吗?这部分的就好

追答长度有*,我吧图片转换函数发你百度HI里面吧
private void button1_Click(object sender, EventArgs e)
{
Image a = this.button1.Image;
this.button1.Image = this.button1.Tag as Image;
this.button1.Tag = a;
}

private void Form1_Load(object sender, EventArgs e)
{
//给按钮设置背景图片
string ImagePath = @"G:\Users\Administrator\Pictures\未命名.jpg";
string ImagePath2 = @"G:\Users\Administrator\Pictures\未命名2.jpg";
//吧指定路径的图片转为数组
byte[] PicA= imageToByteArray(ImagePath);
//吧数组转换为IMAGE对象
Image a = byteArrayToImage(PicA);
this.button1.Image=a;
//吧指定路径的图片转为数组
byte[] PicB = imageToByteArray(ImagePath2);
//吧数组转换为IMAGE对象
Image b = byteArrayToImage(PicB);
this.button1.Tag = b;
}
}
}

热心网友 时间:2023-10-21 00:48

1 将两个图像加入到项目资源中

2 设置一个bool 值开关

3 点击按钮时切换开关,然后根据开关为按钮设置不同的图像资源文件

 

代码如下所示:


追问太感谢你了,不过还是有点小问题,因为我这个是点灯游戏,有许多个按钮,为什么有的需要点两次才会变过来呢?另外,image是不是无法设置图片随着按钮自动调整大小,从而将它全部显示,我的图片只能显示部分

追答

两次点击才切换的话,是不是因为你有多个按钮,但是你只用了一个bool的切换开关。这个必须一个按钮一个开关的。当然你可以将bool 调到按钮的tag中,你可以看我后面的示例代码


如果需要图像随按钮调整的话,那需要将图像设置为按钮的BackgroundImage,并设置按钮的BackgroundImageLayout为ImageLayout.Stretch,你可以看我后面的示例代码。


热心网友 时间:2023-10-21 00:48

能用到的代码楼上都给了,思路可以更简单一些。

首先,你一定已经有了2副图片了吧?假设一个叫pic1,一个叫pic2
其次,设置一个类变量showPic1=true;

每次点击按钮时,在click事件里:
showPic1=!showPic1;//切换状态
//设置按钮图片
if(showPic1)
{
.....
}else{
......
}

热心网友 时间:2023-10-21 00:49

把图片转换为BYTE数组保存到按钮的TAG中去,点击的时候把当前的按钮图片保存到1个BYTE数组变量 我命名为PicA,再按钮TAG中保存的图片取去设置为当前的按钮图片,然后把PicA保存到按钮的TAG属性中,这样就可以实现了.
方法有很多,我这个只是很普通的1种追问听着好像很复杂啊,我不知道怎么把图片转换为数组,可以给具体代码吗?这部分的就好

追答长度有*,我吧图片转换函数发你百度HI里面吧
private void button1_Click(object sender, EventArgs e)
{
Image a = this.button1.Image;
this.button1.Image = this.button1.Tag as Image;
this.button1.Tag = a;
}

private void Form1_Load(object sender, EventArgs e)
{
//给按钮设置背景图片
string ImagePath = @"G:\Users\Administrator\Pictures\未命名.jpg";
string ImagePath2 = @"G:\Users\Administrator\Pictures\未命名2.jpg";
//吧指定路径的图片转为数组
byte[] PicA= imageToByteArray(ImagePath);
//吧数组转换为IMAGE对象
Image a = byteArrayToImage(PicA);
this.button1.Image=a;
//吧指定路径的图片转为数组
byte[] PicB = imageToByteArray(ImagePath2);
//吧数组转换为IMAGE对象
Image b = byteArrayToImage(PicB);
this.button1.Tag = b;
}
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 房产官司律师费多少 如何添加flash开关按钮 眼睛,开关机按钮在响应式布局中怎么表示 怎么在SyntaxHighlighter中添加开关行号按钮,或者重新着色方法是什么??? 在html页面中有一个按钮,点击这个按钮,将页面某一个区域保存为图片,并... 吉林工程技术师范学院的办学条件 大家觉得茶艺师和咖啡师那个更加有前景? 请问招聘茶艺师一般都要26岁以下的,超过这个年龄的茶艺师都做什么工作?在茶艺方面还有什么发展么? 西点师,茶艺师和咖啡师哪个发展前景好? 茶艺中职生的职业生涯规划2000字 我的老婆是大佬3的韩国翻译是谁? 我的老婆是大佬3的影片评价 我的老婆是大佬3有没有拍下来? 求我的老婆是大佬3里面的人物名字? 我的老婆是大佬3的介绍 《我的老婆是大佬3》中男主角是《ON AIR》中的男主角么? 生活多面手 全新宝马2系旅行车新车图解 宝马2系敞篷自动启停在哪 宝马MINI的启动步骤是怎样的? 怎样本地产生oracle 死锁 宝马2系旅行车停车步骤 吉利X6怎么样? 真我Q3pro屏幕和哪个手机通用 宝马x6哪个国家生产的 真我q3pro屏幕乱跳 真我q3s屏幕有疏油层吗 怎样恢复删掉的说说评论? 别人评论的说说虽然删除了但能找回吗? 如何恢复空间说说被删评论.急急急急!! 空间动态说说的别人评论删掉 怎么复原 求2008美国总统大选全部视频(英文网站) 邪恶力量 第二季字幕! 儿童文学是科普书吗 瑞纳汽车怎样更换火花塞 现代瑞纳更换火花塞报故障码 现代瑞纳更换火花塞需要多久? 瑞纳火花塞多久换一次,瑞纳火花塞怎么更换 现代瑞纳更换火花塞多少钱 现代瑞纳多长时间更换一次火花塞? 现代瑞纳多久更换火花塞? 北京现代瑞纳换火花塞后感觉没力