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

 我来答
哲事姓无
2012-12-09 · TA获得超过1176个赞
知道小有建树答主
回答量:903
采纳率:100%
帮助的人:439万
展开全部

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

2 设置一个bool 值开关

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

 

代码如下所示:


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

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


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


彤流皖t5
2012-12-08 · TA获得超过158个赞
知道小有建树答主
回答量:112
采纳率:100%
帮助的人:80万
展开全部
能用到的代码楼上都给了,思路可以更简单一些。

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

每次点击按钮时,在click事件里:
showPic1=!showPic1;//切换状态
//设置按钮图片
if(showPic1)
{
.....
}else{
......
}
更多追问追答
追问
我的代码是这样的,但是不管用,可以帮我找出原因吗?那个数组的我实力太差,呵呵。load加载已经设置好了图片为2.jpg
void but_Click(object sender, EventArgs e)
{ Button but = (Button)sender;
if (but.BackgroundImage== diandeng.Properties.Resources._2)
but.BackgroundImage = diandeng.Properties.Resources._3;
else
but.BackgroundImage=diandeng.Properties.Resources._2; }
追答
打个断点调试一下,看but.BackgroundImage有没有东西
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
249001762cc
2012-12-08 · 超过16用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:44.7万
展开全部
把图片转换为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;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式