假设主对话框上有10个按钮,用来显示图片,图片是动态显示的,现在有2中方法。子类和ownerdraw方法,首先子类的话应该是在子类的onpaint里面绘图,如果全绘出来的话那如果10个按钮中有n个需要重绘的话就调用n次onpaint,所以这样感觉不好,比较理想的是一次onpaint显示一副,然后哪个按钮需要重绘就onpaint哪个,不过这样我不会实现。还有ownerdraw方法,这个我没有试过,所以问问高手怎么在多个按钮上显示图像?
解决方案 »
- vc调用gcc编译问题,求大虾、高手帮助
- QQ 加密HASH法
- VC Addin开发中如何遍历工程中的文档
- MDI的问题(回复就给分)
- 可以知道系统当前其它进程的窗口句柄,怎样获得其执行文件的路径?
- 我是菜鸟,请问一下,学VC是不是要先学C++的,我看书看的都不太懂诶
- 100分求Visual Assist(wholetomato.com)的KEY
- 如何得到网上邻居中全部的计算机名或ip ?
- 请问在安装VC时说找不到文件mssetup.dll 是怎么回事?
- 急!急!,哪位大侠知道哪儿有播放(*.dat)格式的播放器或源码.
- 如何调试web用的ActiveX,老是提示 fatal error LNK1168 cannot open for writing
- 有关GPS定位问题
在新类中处理
在对话框类中 做响应的初始化就好了我的博客里有篇我自己写的
你看下吧
http://blog.csdn.net/FireBirdCN/archive/2008/10/11/3056891.aspx
{
// TODO: Add your code to draw the specified item
CRect rc;
GetClientRect(&rc);
CDC dc;
using namespace Gdiplus;//应用 GDI+前必须的设置
Graphics graph(GetDC()->m_hDC);
USES_CONVERSION; // 很复杂的定义 头文件添加了#include "atlbase.h"
wchar_t* TempBoardPath=A2W(m_ResoucePath);//CString 转 wchar_t if(m_ResoucePath.IsEmpty())
{
Image image(L"E:\\图片相关\\我的作品\\GDI+BUTTON 水晶1.png");
graph.DrawImage(&image,0,0,rc.right-rc.left,rc.bottom-rc.top); }
else
{
Image image(TempBoardPath);
graph.DrawImage(&image,0,0,rc.right-rc.left,rc.bottom-rc.top); }}
这里文件名完全可以用变量!,当实例化时将变量赋值,来决定需要加载的是哪幅图像!
你说那个 只是在没有指定资源是 默认的图像显示if(m_ResoucePath.IsEmpty())
{
Image image(L"E:\\图片相关\\我的作品\\GDI+BUTTON 水晶1.png");
graph.DrawImage(&image,0,0,rc.right-rc.left,rc.bottom-rc.top); }
else
{
Image image(TempBoardPath);
graph.DrawImage(&image,0,0,rc.right-rc.left,rc.bottom-rc.top); } m_ResoucePath就是外部传来的图像 在这里加了判断 有的话则用
Image image(TempBoardPath);
graph.DrawImage(&image,0,0,rc.right-rc.left,rc.bottom-rc.top);