问一个获取屏幕图像再显示的逻辑问题????(100分!!!)

thewintersun 2007-08-30 04:31:04
假如我要搞一个获取整个屏幕,然后将其中一部分放大,然后将放大的部分全屏在桌面上显示。
当时这个过程是一个持续运行过程。

现在的问题是,我如果获取到了整个屏幕后,已经将放大的部分在全屏显示了。那么我再次去获取的时候,获取的是现在在屏幕上显示的内容,也就是放大之后的内容,那这样就使得图像不断的放大了下去,类似于陷入了一个死循环。

请问大家有什么法子?
可以讨论下,谢谢了!~
...全文
300 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
thewintersun 2007-09-04
  • 打赏
  • 举报
回复
up
thewintersun 2007-09-03
  • 打赏
  • 举报
回复
我自己想到一种方法,就是在显存种改变系统的显存。
但是现在遇到一个问题,现在已经得到了系统的显存的内容,而且direct已经提供了缩放的方法。
就是用blt。
但是现在blt函数总是出问题,不知道为什么??
高手能不能顺便帮我看看这两个帖子:
也是我发的,但是没人回答:
http://topic.csdn.net/u/20070903/08/fc6f4817-95b7-40ec-a98f-551e831e5f63.html
http://topic.csdn.net/u/20070425/15/9cba5e7c-9bef-4a1d-a722-49cbac911743.html

谢谢了
fronz 2007-09-03
  • 打赏
  • 举报
回复
打错了,
不过要做这些算法也可以=〉不做这些算法也可以

关键是你“放大”的意图是什么,图像信息是否允许丢失、更改、细化等处理,需要的话就和一些算法相关。而第二种是对图像信息尽力保留,像原尺寸随放大倍数变化。

这些该是常规处理方法吧,我只是说说思路
fronz 2007-09-03
  • 打赏
  • 举报
回复
这个流程--
全屏显示一幅图像,放大区域(圆形或方形)随鼠标移动,区域内显示放大预览,鼠标点击后,获取鼠标左键点击的坐标,该坐标周围区域放大至全屏。编程中基本上都是鼠标消息处理。

非要无限操作而像素点大小不变的话,
判断源图像像素是否大于屏幕像素。大于的,需要提取算法,
对于小于全屏幕像素的图像,需要图像插值算法。

不过要做这些算法也可以,将每个像素点区域随放大倍数变化就可以。需要将显存中的数据按屏幕显示分配,效果就是越放大越模糊。像原越大。
zhuzhu101011 2007-09-03
  • 打赏
  • 举报
回复
你放大了要做好放大的标记
插值
thewintersun 2007-09-03
  • 打赏
  • 举报
回复
假如我要搞一个获取整个屏幕,然后将其中一部分放大,然后将放大的部分全屏在桌面上显示。
当时这个过程是一个持续运行过程。
-------------------------------

你不关了后来放大的,怎么获取得到原来的?
==================================================
关了,那岂不是一闪一闪的了。应该是不能关的。
jhs1982419 2007-09-01
  • 打赏
  • 举报
回复
获取到了整个屏幕后,将放大的部分全屏显示完成之后,要刷新屏幕。

不然,再次去获取的时候,获取的是现在在屏幕上显示的内容,也就是放大之后的内容,肯定会出问题.
长尾巴的悟空 2007-09-01
  • 打赏
  • 举报
回复
假如我要搞一个获取整个屏幕,然后将其中一部分放大,然后将放大的部分全屏在桌面上显示。
当时这个过程是一个持续运行过程。
-------------------------------

你不关了后来放大的,怎么获取得到原来的?
thewintersun 2007-09-01
  • 打赏
  • 举报
回复
对于放大的1.5倍这种情况,以前的一个像素应该变成几个像素?应该怎么安排?四舍五入还是怎么样?
======================
没有四舍五入的事吧,应该需要插值。原来的2个点变成3个,4个变成6个,多出来的点需要和周围象素相关的插值,还要考虑整个屏幕的象素总数,具体怎么处理,你需要找一种大家通用的算法,呵呵,我没搞过图象放大程序,这只是我的想法。
-------------------------------------------------
不知道像windows的图片和传真查看器是怎么做的??
thewintersun 2007-08-31
  • 打赏
  • 举报
回复
怎么处理显存中的数据???
通过什么方法?hook系统调用??
fronz 2007-08-30
  • 打赏
  • 举报
回复
对于放大的1.5倍这种情况,以前的一个像素应该变成几个像素?应该怎么安排?四舍五入还是怎么样?
======================
没有四舍五入的事吧,应该需要插值。原来的2个点变成3个,4个变成6个,多出来的点需要和周围象素相关的插值,还要考虑整个屏幕的象素总数,具体怎么处理,你需要找一种大家通用的算法,呵呵,我没搞过图象放大程序,这只是我的想法。
ReverseEngineering 2007-08-30
  • 打赏
  • 举报
回复
放大屏幕,按你的想法实际是处理显存中的数据,只要你不重复处理同一块内存数据不会发生你设想的事情的。
thewintersun 2007-08-30
  • 打赏
  • 举报
回复
up 一个
thewintersun 2007-08-30
  • 打赏
  • 举报
回复
就是想问问在,刷新了之后,会再次放大的问题
另外对于放大的1.5倍这种情况,以前的一个像素应该变成几个像素?应该怎么安排?四舍五入还是怎么样?
ouyh12345 2007-08-30
  • 打赏
  • 举报
回复
判断什么时候该做这个操作。
在这个操作里,防止函数重入,即防止在放大图像,显示全屏的过程中,再次放大。
如果图像放大后,没有刷新屏幕,再次放大,那是程序流程的问题。

19,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧