关于用GDI+绘制界面的一些问题 和好的解决办法像制作一个TM2008的主窗体界面是否需要这么一个类该类是仿按钮类来做的  但是他是一个贴图类  也就是说把按钮全部替换为贴图的方式因为我在使用中发现异形按钮在对话框上刷新的部分是很难进行的 即使是透明了部分 但完完全全还是一个矩形,如果防止按钮闪烁,1.刷新对话框时不刷新按钮,那么透明的部分就会有残影.
2.刷新对话框的时候刷新按钮,那么重合部分就会闪烁.
3.刷新前先将按钮中的图像绘制到按钮的底部,减小色差达到无闪烁.此方法虽然比较好可以实现,但必须从dc获取并保存起来.保存的时候如果有其他窗体在其上方,反到会一同保存起来.有残影,并且一直保留.所以我想到用贴图类的方式来模拟一个按钮类.不知道可行与否.曾经听许多界面研究人说QQ的窗体是一个整体的图片.不知道到底是怎样来做的.但好像也只有按钮之类的东西才是图片.利用双缓存合成的.请大家多多交流.向你们学习.

解决方案 »

  1.   

    哦对了 这里忘记提DirectUI技术,谁能详细解释一下 是否就是一堆的MemDC贴图的最后结果
      

  2.   

    bcg库提供了这种功能,把一副位图中的某个或某些矩形区域模拟成按钮区域,可以响应点击事件执行某些操作,鼠标移上去也能做出一些图像变化,就好像是一个贴图按钮一样。DirectUI技术并不神奇,它是窗口系统的一种扩展,只不过很少被开发者使用。所有DirectUI的窗口实际上实现了一个叫做IAccessible的COM接口,这个窗口里面的所有“子窗口”都实现了同样的接口,但是这些“子窗口”无法通过spy++之类的工具看到,子窗口的键盘和鼠标响应也不是通过窗口消息来完成的,而是一套独立的事件机制。事实上操作系统的几乎所有标准窗口都实现了IAccessible接口。
      

  3.   

    DirectUI 这是存在与VS里的一个类么??