求教图形图像处理高手:如何实现画图软件的多层(layer)处理??

tobato 2001-03-16 10:46:00
如何实现画图软件的多层处理? 就像photoshop中的层一样? 怎么实现的可以在不同的

层上绘制图像?
...全文
308 17 打赏 收藏 举报
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
X_Window 2001-11-02
用CObjList
  • 打赏
  • 举报
回复
vonvon 2001-05-01
如果有n个层的话,那在内存里就有n个位图,或者干脆就只是位图的数据,每次刷新的时候
将每个层叠和起来,B=sigma(wk*Lk) k=1...n,wk是用于alpha混合的权重系数,sigma(wk)=1
k=1...n。Lk是第k个层的位图数据,将计算的结果B画到显示DC上。我想这样并不存在删除层
的困难。Mr.jesun, is that right?
  • 打赏
  • 举报
回复
jesun 2001-04-22
我的想法还不成熟,大概是这样的,请多指教:
我想对于windows显示图像来说,一旦层加上去显示出来之后,那么就已经将数据加入了DIB之中,要删除莫非要从DIB中筛选出来再减去吗?如果是这样做的话企不是要比添加层复杂多了。
否则的话,请您说说正确的删除层应该怎么做?
  • 打赏
  • 举报
回复
vonvon 2001-04-22
总算又有人来讨论了。
我想删除一个层不会比加入一个层困难多少。
能否说说你的想法,Mr.jesun。
其实这是一个非常有趣的问题,为什么来讨论的人这么少
  • 打赏
  • 举报
回复
jesun 2001-04-20
这里高手很多啊。我想插嘴问一下:你们认为层管理是只加层,而不需要删除一个层吗?因为我觉得要删除一个层很难。
  • 打赏
  • 举报
回复
vonvon 2001-04-04
总是需要在速度与效果之间做出妥协,没办法的
  • 打赏
  • 举报
回复
tobato 2001-03-31
同志,继续啊? 用alhpa 是不是处理速度太慢了??
  • 打赏
  • 举报
回复
vonvon 2001-03-22
不知道还有没有讨论这个问题的同志。
关于图像的分层也是我考虑了很久的问题。
关于分层的数据结构问题,我想shu()同志讲得有一定道理,但我是c的忠实支持者,
如果叫我来实现,恐怕我不会使用类,但实现方法并不构成解决分层问题的障碍。
我想说的有以下几点:
1。透明。这是分层的关键,怎样才能表示一幅图上透明的部分?对于256色来说,
还比较容易做到,可以定义一个调色版中没有的颜色。但对于32bit,24bit真彩
图该怎么办?任何一种颜色都是图像中可能出现的,不能用保留色彩的办法来表示
透明的部分。同样因为这个原因,用mask也不能达到去处透明部分的目的。如果一定
要这样做,也许我会这么设计:用32bit真彩的alpha分量(最高8bit)来表示透明,
所有的非透明色这8bit都置为同一个值(比如说0),而透明色置为另一个值(例如
255),也许这是个好办法,但势必降低处理速度,必须逐点判断某个像素是否为
透明的。
如果还有同志想继续讨论,我会讲下面几点...
  • 打赏
  • 举报
回复
tobato 2001-03-20
加油! 加油! shu 的思路挺好的 继续加分
  • 打赏
  • 举报
回复
shu 2001-03-19
我看用不着申请不同的CDC,因为CDC只是抽象输出装置,就象你面对的白纸一样。
况且分层的概念主要在于层之间互相区别,防止干扰,不仅仅在于输出。
所以,我们应首先归纳分层到底有那些需求?相应有哪些数据结构?
1、层的独立性,它的操作是独立的,管理的数据是独立的,实际上输出结果也是独立的——你可以屏蔽或激活它的输出。
2、层与层之间存在数据甚至操作上的交流——这需要仔细分析。
3、尽管各层的数据不同但对所有层的操作是基本一样的。
4、能够输出的层是按一定规则输出到统一的CDC上,简单的规则就是顺序输出(队列或堆栈),复杂点向窗口一样有自己的输出属性比如z-order或其他加权。

以上只是一些简单分析,但完全可以预见我们的设计方向:
1、层及层中的数据以不同的类来管理,层的类用来管理和操作属于该层的数据的类的对象。
2、会有第三个类对层进行管理和操作。
3、输出肯定复杂些,但说到底是安排各层及其所属数据对象的输出顺序,输出权。安排好顺序后激活wm_paint,从头到尾把各层各对象过边筛子。
我原先理解WINDOWS的ONPAINT(重画机制)非常的笨,但它的确适合这种复杂对象的输出。
要不然微软早想出更好的办法了。
  • 打赏
  • 举报
回复
telong 2001-03-19
每层用一个链表记录信息。
  • 打赏
  • 举报
回复
william_008 2001-03-19
我想是这样的:不同的图层用不同的CDC表示,但显示时就把这几个CDC中的位图相应点进行相加,异或这类的运算,把结果送到另外一个CPaintDC中显示
  • 打赏
  • 举报
回复
tobato 2001-03-19
还是没人会..... 不会吧?? 高手快来啊!
  • 打赏
  • 举报
回复
classfactory 2001-03-19
http://www.csdn.net/expert/Topic/67225.shtm
  • 打赏
  • 举报
回复
cloud_soft 2001-03-18
gz
  • 打赏
  • 举报
回复
tobato 2001-03-18
没人搞的定?? 不会吧....
  • 打赏
  • 举报
回复
xiangfangpu 2001-03-16
关注
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC
加入

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
申请成为版主
帖子事件
创建了帖子
2001-03-16 10:46
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……