7559|21

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

按钮关联图片 [复制链接]

请问在cv++中如何用按钮关联几张图片,然后通过点击按钮来选择图片?

最新回复

终于完成了,原来你的代码已经是对的。谢谢!  详情 回复 发表于 2008-12-29 15:59
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
选择图片?可以建一个通用文件对话框,在lpszFilter参数中指定文件的类型就行了嘛。
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
cv++是什么东东?

将图片做成资源,根据需要选择不同的。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
在每个按钮对应的消息处理函数里面添加图片选择语句就可以了
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
本人菜鸟,可不可以在详细一点?
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
不懂,帮顶
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 4 楼 hzhh1985 的回复:
本人菜鸟,可不可以在详细一点?


LZ现在的难度在哪?最好说明问题所在才好解决嘛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

8
 
比如说要调用那些函数才能实现?
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
问题能明确些么?

LZ是不是想做成每个按钮对应一个图片,按下按钮时就将对应的图片显示出来?
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

10
 
我是想只用一个按钮关联多张图片,然后只按这个按钮去选择不同的图片。就是每按一次按钮就变换图片。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 
每按一次按钮变换图片,那图片希望显示在哪里?是图片按钮?还是另外的显示区域?不同的需求需要的解决方法不同。
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

12
 
不是图片按钮,显示在对话框的图片控制控件上。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

13
 
上段代码给你:

1、按键处理函数:

  1. void CXXDlg::OnBnClickedButtonXX()
  2. {
  3.         static int choice;   //图像选择变量,IMG_NUM为图像数量

  4.         if(choice < IMG_NUM)
  5.                 choice++;
  6.         else
  7.                 choice=0;

  8.         Invalidate();   //刷屏
  9. }

复制代码
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

14
 
2、刷屏函数:

  1. void CXXDlg::OnPaint()
  2. {
  3.         if (IsIconic())
  4.         {
  5.         }
  6.         else
  7.         {
  8.                 CStatic *image;

  9.                 image = (CStatic*)GetDlgItem(IDC_IMAGE);
  10.                 image->ModifyStyle(0xf,BITMAP);

  11.                 switch(choice)
  12.                 {
  13.                 case 0:
  14.                         image->SetBitmap(IDB_BITMAP);
  15.                         break;
  16.                 case 1:
  17.                         image->SetBitmap(IDB_BITMAP1);
  18.                         break;
  19.                 case 2:
  20.                         image->SetBitmap(IDB_BITMAP2);
  21.                         break;
  22.                 ...

  23.                 default:
  24.                         break;
  25.                 }
  26.         }
  27.         ...
  28. }

复制代码
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

15
 
static int choice;  这句做为全局变量
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

16
 
非常感谢biaozai06你的热心回答。运用你的代码编译到image->ModifyStyle(0xf,BITMAP);时,出现
\tsDlg.cpp(66) : error C2275: 'BITMAP' : illegal use of this type as an expression
1>        C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\PocketPC2003\include\wingdi.h(289) : see declaration of 'BITMAP'
的错误。
请问要怎样解决?
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

17
 
那就把image->ModifyStyle(0xf,BITMAP);这句注释掉吧,只要将你的Picture Control控件的属性设为bitmap就行
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

18
 
按照你的方法做了,可是编译执行后按按钮还是没有反应。我的源程序里没有void CXXDlg::OnPaint();
是不是要先声明OnPaint();
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

19
 
。。我上面说的只是思路,
看你是新手,给你上段调过的代码:(记得多自己动手,呵呵)


  1. CBitmap bitMap;   //全局变量,否则出错

  2. void CXXDlg::OnBnClickedButtonXX()
  3. {
  4.         CStatic *image;
  5.         HBITMAP hMap;

  6.         choice++;
  7.         image = (CStatic*)GetDlgItem(IDC_IMAGE);    //获得Picture Control控件

  8.         switch(choice)
  9.         {
  10.         case 0:
  11.                 bitMap.LoadBitmap(IDB_BITMAP);   //IDB_BITMAP为你工程中的图片资源ID
  12.                 hMap = (HBITMAP)bitMap;
  13.                 image->SetBitmap(hMap);
  14.                 break;
  15.         case 1:
  16.                 bitMap.LoadBitmap(IDB_BITMAP1);
  17.                 hMap = (HBITMAP)bitMap;
  18.                 image->SetBitmap(hMap);
  19.                 break;
  20.         case 2:
  21.                 bitMap.LoadBitmap(IDB_BITMAP2);
  22.                 hMap = (HBITMAP)bitMap;
  23.                 image->SetBitmap(hMap);
  24.                 break;
  25.         default:
  26.                 break;

  27.         }
  28.         Invalidate();  //刷屏显示图片
  29. }
复制代码
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

20
 
引用 17 楼 hzhh1985 的回复:
...我的源程序里没有void CXXDlg::OnPaint();
是不是要先声明OnPaint();


void CXXDlg::OnPaint();是你用MFC建对话框工程时自动创建的代码,用于响应WM_PAINT绘图消息。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表